这是因为您没有使用ORM在事务不知道它应该自己提交之前插入ORM,因为事务状态没有被标记为脏。
DBSession.execute在查询后,将以下代码放置在views.py中。
from zope.sqlalchemy import mark_changedsession = DBSession()session.execute(...your query...)mark_changed(session)
此时,事务应该能够正确提交查询,或者使用ORM插入新行。
以下是有关此主题的更多信息:
https://pypi.python.org/pypi/zope.sqlalchemy/0.7.4#id15
默认情况下,zope.sqlalchemy在首次使用会话时将其置于“活动”状态。ORM写入操作会自动将会话移至“已更改”状态。这样可以避免不必要的数据库提交。有时有必要直接通过SQL与数据库进行交互。无法猜测这样的操作是读还是写。因此,当手动SQL语句写入数据库时,我们必须手动将会话标记为已更改。



