我的問題:
假設我有一個包含一個DateTime列的表。我現在想查詢與Date匹配的所有行。
我的點子:
Table.query.filter(Table.datetime.date() == date_to_be_matched)
顯然這不起作用,因為列本身沒有 date() 方法。我還嘗試將 date_to_be_matched 轉換為日期時間,但我需要訪問當前行/值的時間,否則 == 評估將不起作用。
所以我的問題是如何在評估過濾器運算式之前呼叫函式/訪問當前行和值。
我已經在這里查看了 SQLAlchemy Docs 和一堆其他問題,但找不到我的問題的答案。
uj5u.com熱心網友回復:
在 SQL 中,您的查詢將是這樣的:
SELECT * FROM mytable WHERE date(datetime_column) = '2022-02-03';
要在 SQLAlchemy 中執行此操作,請使用相同的方法:將 RDBMS 的date函式* 應用于要過濾的列。
import sqlalchemy as sa
Table.query(Table).filter(sa.func.date(Table.datetime) == date_to_be_matched)
* 從日期時間中提取日期部分的函式名稱可能因 RDBMS 而異,并非所有 RDBMS 都可能提供這樣的函式。SQLAlchemy 的func屬性是來自 RDBMS 的函式名,所以如果你的 RDBMS 的等效函式是,get_date那么你會做sa.func.get_date(...).
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/403767.html
標籤:
