SQLAlchemyによってデータベースに送信されたSQLコマンドのデバッグ(表示)

| | | |

PersonテーブルをラップするPersonというORMクラスがあります:

dbなどへの接続を設定した後、次のステートメントを実行します:

 people = session.query(Person).all() 

personテーブルには(まだ)データが含まれていないため、印刷すると変数peopleの場合、空のリストが表示されます。

ORMクラスPeopleで参照されているテーブルの名前をpeople_foo(存在しません)。

次に、スクリプトを再度実行します。存在しないテーブルにアクセスしようとしても例外がスローされなかったことに驚きました。

したがって、次の2つの質問があります。

  1. SQLAlchemyを設定するにはどうすればよいですか。 dbエラーをスクリプトに伝播しますか?
  2. dbエンジンに送信されているSQLを表示(つまり印刷)するにはどうすればよいですか?

役立つ場合は、PostgreSQLを使用しています。

[編集]

パッケージを作成しています。 __main__。pyスクリプトには、次のコードがあります(ここでは短縮されています)。

  ###__main__。pyimportcommon#ロギングをインポートし、ロギングセットアップ機能を定義します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。設定されていない場合、ログは記録されません")parser.add_option( " --level "、dest =" loglevel "、metavar =" LOG LEVEL "、help ="デバッグレベル。設定されていない場合、レベルはデフォルトで低になります ")#指定されていない場合はデフォルトを設定します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)#など...####dbfuncs。 py import logging#__ main__。pylogging.getLogger( "sqlalchemy.engine")。seのロガーに「バインド」する方法がわからないtLevel(logging.INFO)engine = create_engine( "postgres:// postgres:pwd @ localhost:port / dbname"、echo = True) 

[Edit2]

Commonモジュールはロガーを正しく設定し、commonをインポートする他のモジュールでロガーを使用できます。

ただし、 dbfuncsモジュールでは次のエラー/警告が表示されます:

ロガー"sqlalchemy.engine.base.Engine

のハンドラーが見つかりませんでした

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers


Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method