如何移除SQLAlchemy操作数据库时输出的引擎日志信息?
如何移除SQLAlchemy的数据库操作日志输出
你在开发终端版虚拟通讯录时遇到的日志输出问题,根源很简单——你创建数据库引擎的时候开了SQLAlchemy的调试日志开关。
看你的模型代码里这一行:
engine = create_engine("sqlite:///contacts.db", echo=True)
这里的echo=True就是让SQLAlchemy把所有执行的SQL语句、连接信息都打印出来,方便开发时调试,但用户使用时肯定不需要看这些。
解决方法:把echo=True改成echo=False就行,修改后代码如下:
engine = create_engine("sqlite:///contacts.db", echo=False)
改完之后再运行操作函数,那些INFO日志就不会再输出了。
额外小提示(给新手的补充)
- 开发阶段可以把
echo设为True,能直观看到SQLAlchemy帮你生成的SQL语句,方便排查问题;发布给用户用的时候一定要关掉。 - 你的
update_contact函数里,最后打印的Contact.name是SQLAlchemy的列对象,不是实际的联系人名称,改成name或者查询到的联系人名称会更准确,比如:# 先查询到要更新的联系人 contact = session.query(Contact).filter(Contact.name == name).first() # 执行更新操作... print(f"{contact.name} has been updated.")
内容的提问来源于stack exchange,提问作者ScottMButler
相关产品推荐
相关产品推荐

