SQLAlchemy uses the standard Python logging library。要登錄查詢到名爲db.log
文件:
import logging
logging.basicConfig(filename='db.log')
logging.getLogger('sqlalchemy.engine').setLevel(logging.INFO)
當使用Python記錄,確保所有echo
標誌被設置爲False
,以避免重複記錄。現在,添加一些東西到DB:
>>> Movie(title=u"Blade Runner", year=1982)
>>> session.commit()
,紀錄是這樣的:
INFO:sqlalchemy.engine.base.Engine:BEGIN (implicit)
INFO:sqlalchemy.engine.base.Engine:INSERT INTO models_movie (title, year, description) VALUES (%(title)s, %(year)s, %(description)s) RETURNING models_movie.id
INFO:sqlalchemy.engine.base.Engine:{'title': u'Blade Runner', 'description': None, 'year': 1982}
INFO:sqlalchemy.engine.base.Engine:COMMIT
沒錯,但(一),這也可能將消息發送到標準輸出,(b)您可以設置一個類似的效果只需將特定引擎的'echo'屬性設置爲True,並且(c)SQLA的日誌記錄不會以佔位符替換顯示查詢,儘管它會分別記錄參數化SQL和參數。 – 2011-06-15 11:43:21
@Vinay這些都是好的一點,我已經更新了我的答案,以說明如何使用python日誌記錄專門記錄到一個文件,並顯示日誌輸出的示例 – zeekay 2011-06-15 14:04:22
這很棒,而且您已經有了我的upvote :-) – 2011-06-15 14:13:43