You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SqlModel中记录及查看发送至数据库的SQL查询?

在SqlModel中记录并查看SQL查询语句

SqlModel基于SQLAlchemy,因此可以通过以下几种方式记录和查看发送到数据库的SQL查询:

方式一:启用引擎的echo模式(快速调试)

创建数据库引擎时添加echo=True参数,引擎会自动将所有执行的SQL语句(包括参数、事务操作)打印到控制台,适合开发阶段快速排查问题。

示例代码:

from sqlmodel import create_engine, SQLModel, Session

# 启用echo模式查看SQL
engine = create_engine("sqlite:///your-db.db", echo=True)
SQLModel.metadata.create_all(engine)

with Session(engine) as session:
    # 执行任意数据库操作,比如查询、新增
    # user = User(name="Alice")
    # session.add(user)
    # session.commit()
    pass

方式二:通过Python日志系统精细控制

如果需要更灵活的日志管理(比如输出到文件、控制日志级别),可以配置Python的logging模块,针对sqlalchemy.engine日志器设置级别:

  • 设置INFO级别会输出执行的SQL语句;
  • 设置DEBUG级别会额外输出参数绑定的具体值,更适合调试参数问题。

示例代码:

import logging
from sqlmodel import create_engine, SQLModel, Session

# 配置日志基础设置
logging.basicConfig(
    level=logging.INFO,
    format="%(asctime)s - %(name)s - %(levelname)s - %(message)s"
)
# 开启SQLAlchemy引擎的日志
logging.getLogger("sqlalchemy.engine").setLevel(logging.INFO)

engine = create_engine("sqlite:///your-db.db")
SQLModel.metadata.create_all(engine)

with Session(engine) as session:
    # 执行数据库操作
    pass

实用提示

  • 生产环境建议关闭echo=True,避免输出敏感信息或占用过多资源,改用日志系统按需记录。
  • 如果需要过滤特定类型的日志,可以通过日志器的过滤器进一步调整,比如只记录查询语句,忽略事务操作。

内容的提问来源于stack exchange,提问作者Atilla Ozgur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 18:05:03