3
我遇到了一個問題,我必須找到表中的數據是否存在使用SqlAlchemy核心。SqlAlchemy核心和裸存在查詢
我認爲做這個查詢的最好方法是使用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 = ?)' []
我試着修改了一點(與選擇相結合),但無濟於事。
因此,最終我想出了另一種解決方案,使用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
我有兩個問題:
怎樣的任務可以用exists
方法實現?
查詢結果limit
與exists
一樣有效嗎?
謝謝!我嘗試了這一點,並引發了以下錯誤:'ArgumentError:select()的列參數必須是Python列表或其他可迭代的' – ovgolovin 2013-03-13 11:05:27
對不起,我忘了括號!編輯我的答案。 – icecrime 2013-03-13 11:32:58
謝謝!它與方括號一起使用。奇怪的是,文件中沒有提到'exists'的用法。我認爲這是很常見的操作,以確定數據庫中是否存在某些東西。 – ovgolovin 2013-03-13 20:21:27