0

目的の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)' []
4

1 に答える 1

2

わかった:

>>> session.connection(mapper=MyTable).execute(
      select([exists('1').where(MyTable.name=='x')]))
于 2013-03-09T19:32:19.247 に答える