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