SQLAlchemy 發送到數據庫的調試(顯示)SQL 命令

| | | |

我有一個名為 Person 的 ORM 類,它包含一個人表:

在建立與數據庫等的連接後,我運行以下語句:

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

person 表不包含任何數據(到目前為止),所以當我打印變量 people,我得到一個空列表。

我將我的 ORM 類 People 中引用的表重命名為 people_foo(不存在)。

然後我再次運行腳本。我很驚訝在嘗試訪問不存在的表時沒有引發異常。

因此我有以下兩個問題:

  1. 我該如何設置 SQLAlchemy它將數據庫錯誤傳播回腳本?
  2. 我如何查看(即打印)發送到數據庫引擎的 SQL?

如果有幫助,我正在使用 PostgreSQL。

[編輯]

我正在編寫一個包。在我的 __main__.py 腳本中,我有以下代碼(此處縮短):

### __main__.py import common # 導入日誌並定義日誌設置函數等 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="Debug level. if not set, level will default to low" ) # 如果沒有指定則設置默認值 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__.py logging.getLogger("sqlalchemy.engine").se 中的記錄器tLevel(logging.INFO) engine = create_engine("postgres://postgres:[email protected]: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

News


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