SqlAlchemy Coreを使用して、データがテーブルに存在するかどうかを確認する必要があるという問題に直面しました。
exists
このクエリを実行する最良の方法は、最初のアイテムが見つかるとすぐに検索を停止するメソッドを使用することだと思います。そこで、このバージョンのクエリを作成しました。
conn = self.db.connect()
query = exists().where(cookie_table.c.cookie_id == cookie_id)
result = conn.execute(query)
ただし、次のエラーが発生します。
StatementError: Not an executable clause (original cause: ArgumentError: Not an
executable clause) 'EXISTS (SELECT * \nFROM cookie \nWHERE cookie.cookie_id = ?)' []
私はそれを少し変更しようとしましたが(selectと組み合わせて)、役に立ちませんでした。
それで、最終的に私は、を使用して、機能する別の解決策を思いつきましたlimit(1)
。
conn = self.db.connect()
query = select([1], cookie_table.c.cookie_id == cookie_id).limit(1)
result = conn.execute(query).fetchone()
return True if result is not None else False
2つの質問があります:
方法でタスクをどのように達成できますexists
か?
クエリはとlimit
同じくらい効率的exists
ですか?