[英]Syntax for AND and OR statements in SQLalchemy core?
如何在SQLalchemy核心中編寫以下SQLite表達式?
SELECT * FROM table
WHERE id = 1
AND (last_date IS NULL OR
last_date < date('now', '-30 day') );
我看到SQLAlchemy的ORM的例子使用_and
和_or
,但我不知道,如果這些應用到SQLAlchemy的核心。
https://docs.sqlalchemy.org/en/latest/orm/tutorial.html#common-filter-operators
是的,您可以在列表達式上使用sqlalchemy.and_
和sqlalchemy.or_
(注意末尾的下划線,而不是開頭,前導下划線表示不受支持的私有API)。
您也可以使用&
和|
,位運算符,他們將被以同樣的方式為編譯and_
/ or_
。 請務必正確地將它們括起來, &
和|
比更高的運算符優先級and
和or
。
你的代碼看起來有點像:
t.select().where((t.c.id == 1)
& ((t.c.last_date == None)
| (t.c.last_date < sa.func.date('now', '-30 day'))))
另一個選擇是將連接子句視為逐步過濾的關系,因為身份:
σ 一個∧B r 的 ↔σbσA R
你可以把它寫成sqlalchemy作為
t.select().where(t.c.id == 1) \
.where((t.c.last_date == None)
| (t.c.last_date < sa.func.date('now', '-30 day')))
它產生與上面相同的SQL。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.