我正在嘗試實(shí)現(xiàn)一個(gè)相當(dāng)簡(jiǎn)單的 SQL 查詢,該查詢僅返回包含長(zhǎng)度小于 17 個(gè)字符的字符串(SQLite3 中的文本類(lèi)型)的行。這是計(jì)劃 SQL 中的查詢:SELECT * FROM table WHERE length(col) < 17我嘗試通過(guò)使用以下語(yǔ)句來(lái)獲取它:result = session.query(Table).filter(func.length(Table.col) < 17).all()SQLAlchemy 將其正確翻譯為 [SQL: SELECT table.col AS table_col FROM table WHERE length(?) < ?] 問(wèn)題出在它為問(wèn)號(hào)插入的值。即它取代了第二個(gè)?17 就好了,但是 Table.column 不是獲取實(shí)際長(zhǎng)度,而是獲取代表該列的對(duì)象。 [parameters: (<property object at 0x00000226998E3590>, 17)]. 這導(dǎo)致我收到錯(cuò)誤 sqlalchemy.exc.InterfaceError: (sqlite3.InterfaceError) Error binding parameter 0 - probably unsupported type.。那么如何使用 SQLAlchemy ORM 正確過(guò)濾字符串長(zhǎng)度呢?
如何在 SQLAlchemy ORM 中過(guò)濾給定字符串長(zhǎng)度的列?
當(dāng)年話下
2023-03-16 09:16:39