【发布时间】:2013-02-20 12:03:36
【问题描述】:
我有以下构造,它似乎可以生成所需的 SQL:
>>> print session.query(exists('1').where(MyTable.name=='x'))
SELECT EXISTS (SELECT 1
FROM my_table
WHERE my_table.name = :name_1) AS anon_1
但是,当我尝试使用 .scalar() 或 .all() 执行它时,它会返回错误:
*** UnboundExecutionError: Could not locate a bind configured on SQL expression or this Session
如何为这个简单的查询绑定它?我不想这样做bool(MyTable.query.filter(MyTable.name=='x').first()),因为这会浪费地从表格中拉回整行。
更新:
我也试过了:
>>> session.connection(mapper=MyTable).execute(
exists('1').where(MyTable.name=='x'))
StatementError: Not an executable clause 'EXISTS \
(SELECT 1 \nFROM my_table \nWHERE my_table.name = %(name_1)s)' []
【问题讨论】:
-
你应该有一行写着
session.configure(bind=engine) -
session.configure()抛出错误AttributeError: 'function' object has no attribute 'configure'session.__class__是sqlalchemy.orm.scoping.ScopedSession -
这听起来不对。请在构造
session和运行session.configure()的位置添加相关代码。 -
嗯,我正在使用 TurboGears (1.5.1),正在调查..
标签: sqlalchemy exists turbogears