使用 SQLAlchemy 打印插入查询

rui*_*eco 4 python postgresql sqlalchemy flask-sqlalchemy

我知道如果我尝试使用 ORM 执行选择查询,我可以使用该print方法来打印要生成的 SQL:

print session.query(MyModel)应该返回select * from MyModel(确切的 SQL 可能不同,但想法是存在的)。

我现在有一段代码,我在其中创建一个父对象,循环一些数据以创建通过关系连接到父对象的子对象 然后session.add(parent_object)调用session.commit().

除了这会产生错误之外,我认为不可能产生错误。

有没有办法查看用于插入数据的SQL语句?

生成的错误是:

arg = (<class 'sqlalchemy.exc.ProgrammingError'>, ProgrammingError("(pg8000.core.ProgrammingError) (u'ERROR', u'ERROR', u'22001'... too long for type character varying(10)', u'varchar.c', u'624', u'varchar')",), <traceback object at 0x10c98bb00>)
Run Code Online (Sandbox Code Playgroud)

其中为我拥有的唯一列插入的值varchar(10)'7835109626'

geo*_*xsh 5

您可以启用sqlalchemy 内部记录器来输出 SQL 查询:

import logging

logging.basicConfig()
logging.getLogger('sqlalchemy.engine').setLevel(logging.DEBUG)
Run Code Online (Sandbox Code Playgroud)