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