我正在尝试实现一个相当简单的 SQL 查询,该查询仅返回包含长度小于 17 个字符的字符串(SQLite3 中的文本类型)的行。这是计划 SQL 中的查询:
SELECT * FROM table WHERE length(col) < 17
我尝试通过使用以下语句来获取它:
result = session.query(Table).filter(func.length(Table.col) < 17).all()
SQLAlchemy 将其正确翻译为 [SQL: SELECT table.col AS table_col FROM table WHERE length(?) < ?]
问题出在它为问号插入的值。即它取代了第二个?17 就好了,但是 Table.column 不是获取实际长度,而是获取代表该列的对象。 [parameters: (<property object at 0x00000226998E3590>, 17)]
. 这导致我收到错误 sqlalchemy.exc.InterfaceError: (sqlite3.InterfaceError) Error binding parameter 0 - probably unsupported type.
。那么如何使用 SQLAlchemy ORM 正确过滤字符串长度呢?
MYYA
相关分类