我想打印特定会话生成并发送到数据库的代码。我见过这个问题,但它与 SQLAlchemy 生成的所有 SQL 相呼应。我只想要代表特定会话生成的 SQL。如果它可以在实际发送到数据库之前打印,则加分(就像我们可以使用 Query 对象)
我知道我可以打印查询的 SQL,但在这种情况下
a = Table(id=1)
session.add(a)
b = Table(id=4)
session.add(a)
b.column = 5
session.commit()
Run Code Online (Sandbox Code Playgroud)
没有要打印的查询,但会话正在开始事务、插入行并提交事务。
我希望会话打印到标准输出(或文件,如果不可能的话)它发送到数据库的 SQL 命令。
我希望在控制台中找到的(虚构的)SQL 是
BEGIN TRANSACTION
INSERT INTO Table (id) VALUES (1);
INSERT INTO Table (id, column) VALUES (4,5);
COMMIT TRANSACTION
Run Code Online (Sandbox Code Playgroud)
我完全理解这些行可能不会全部合并在一起,并且可能会被其他代码打印交错(会话首先开始事务,然后代码触发插入的刷新,并且作为最后一件事会话发出提交)
那可能吗?