flask项目中如何打印查看sql语句

时间:2024-07-05 10:45:17

1.启用 SQLAlchemy 调试模式
import logging
logging.basicConfig()
logging.getLogger('sqlalchemy.engine').setLevel(logging.INFO)

2.from sqlalchemy.dialects import mysql
compiled_query = query.statement.compile(dialect=mysql.dialect(), compile_kwargs={"literal_binds": True})
由于我的mysql, 使用的是pymysql  ,所以我的dialect就是mysql.dialect(),大家需要根据自己的数据库匹配的方言。SQLAlchemy 支持多种数据库方言,如 MySQL、SQLite、Oracle 等。以下是一些常见数据库的方言名称:

  • PostgreSQL: postgresql
  • MySQL: mysql
  • SQLite: sqlite
  • Oracle: oracle
  • Microsoft SQL Server: mssql

 3.这是我使用的案例

    query = StockOrder.query.all()
    query = query.order_by(desc(StockOrder.order_time))
    from sqlalchemy.dialects import mysql
    compiled_query = query.statement.compile(dialect=mysql.dialect(), compile_kwargs={"literal_binds": True})
    print(compiled_query)

可以看到打印部分,这里部分省略

SELECT *
FROM stock_orders
WHERE stock_orders.order_type = '卖出' AND stock_orders.order_time >= '2024-06-21 18:00:32.852875' ORDER BY stock_orders.order_time DESC