簡體   English   中英

SQLalchemy核心中AND和OR語句的語法?

[英]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_ 請務必正確地將它們括起來, &| 比更高的運算符優先級andor

你的代碼看起來有點像:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM