আমার একটি ব্যক্তি নামক একটি ওআরএম ক্লাস রয়েছে, যা কোনও ব্যক্তির টেবিলের চারপাশে আবৃত থাকে:
ডিবি ইত্যাদির সাথে সংযোগ স্থাপনের পরে আমি বিবৃতিটি চালাচ্ছি:
people = session.query(Person).all()
ব্যক্তির টেবিলটিতে কোনও ডেটা থাকে না (যেমন এখনও), সুতরাং আমি যখন ভেরিয়েবলটি মুদ্রণ করি তখন আমি peopleএকটি খালি তালিকা পাই।
আমি আমার ওআরএম ক্লাসে উল্লিখিত টেবিলটির নামকরণ করেছি People, people_fooযা (যার অস্তিত্ব নেই)।
আমি তখন আবার স্ক্রিপ্ট চালাতে। আমি অবাক হয়েছিলাম যে অস্তিত্ব নেই এমন একটি টেবিলটি অ্যাক্সেস করার চেষ্টা করার সময় কোনও ব্যতিক্রম ছোঁড়া হয়নি।
আমার তাই নিম্নলিখিত 2 টি প্রশ্ন আছে:
- আমি কীভাবে এসকিউএলএলচেমি সেটআপ করব যাতে এটি স্ক্রিপ্টে ফিরে ডিবি ত্রুটিগুলি প্রচার করে?
- ডিবি ইঞ্জিনে যে এসকিউএল প্রেরণ করা হচ্ছে তা কীভাবে আমি দেখতে (অর্থাত মুদ্রণ) করব?
যদি এটি সহায়তা করে তবে আমি পোস্টগ্রিজ এসকিউএল ব্যবহার করছি।
[সম্পাদনা]
আমি একটি প্যাকেজ লিখছি। আমার __main__.pyস্ক্রিপ্টে, আমার কাছে নিম্নলিখিত কোড রয়েছে (এখানে সংক্ষিপ্ত):
### __main__.py
import common # imports logging and defines logging setup funcs etc
logger = logging.getLogger(__name__)
def main():
parser = OptionParser(usage="%prog [options] <commands>",
version="%prog 1.0")
commands = OptionGroup(parser, "commands")
parser.add_option(
"-l",
"--logfile",
dest="logfile",
metavar="FILE",
help="log to FILE. if not set, no logging will be done"
)
parser.add_option(
"--level",
dest="loglevel",
metavar="LOG LEVEL",
help="Debug level. if not set, level will default to low"
)
# Set defaults if not specified
if not options.loglevel:
loglevel = 1
else:
loglevel = options.loglevel
if not options.logfile:
logfilename = 'datafeed.log'
else:
logfilename = options.logfile
common.setup_logger(False, logfilename, loglevel)
# and so on ...
#### dbfuncs.py
import logging
# not sure how to 'bind' to the logger in __main__.py
logging.getLogger('sqlalchemy.engine').setLevel(logging.INFO)
engine = create_engine('postgres://postgres:pwd@localhost:port/dbname', echo=True)
[সম্পাদনা 2]
প্রচলিত মডিউল লগারটি সঠিকভাবে সেট আপ করে এবং আমি আমার অন্যান্য মডিউলগুলিতে লগার ব্যবহার করতে পারি যা সাধারণ আমদানি করে।
তবে dbfuncsমডিউলে, আমি নিম্নলিখিত ত্রুটি / সতর্কতা পাচ্ছি:
"স্ক্লালচেমি.েনজিন.বেজ.এজাইন। লগারের জন্য কোনও হ্যান্ডলার খুঁজে পাওয়া যায়নি
common.setup_logger()কল দেখতে পাই না (এটি সঠিকভাবে লগিং কনফিগার করে ধরে নেওয়া হচ্ছে)। এছাড়াও,echo=Trueলগিং ব্যবহার করার সময় আপনার প্রয়োজন হবে না ।