使用SQLAlchemy打印插入查询

4

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

print session.query(MyModel)应该返回select * from MyModel(确切的SQL语句可能不同,但思路是相同的)。

现在我有一段代码,我创建了一个父对象,循环遍历一些数据创建连接到父对象的子对象,使用relationship,然后调用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>)

当我唯一的列是varchar(10)时,插入的值为'7835109626'

1个回答

5

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

import logging

logging.basicConfig()
logging.getLogger('sqlalchemy.engine').setLevel(logging.DEBUG)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接