我使用ScalarListType
fromSQLAlchemyUtils
作为我的表的列类型。
我可以使用查询过滤此列contains()
。它按预期工作:
(我的表被称为Event
,列被称为string_list
)。
f = session.query(Event).filter(Event.string_list.contains(['item']))
此查询返回string_list
包含元素的所有事件item
。
现在,我在(我似乎是)必须用来literal_column()
生成查询过滤器的上下文中使用此列类型。然而,在这样做时, contains 不再适用于['item']
作为参数:
f = session.query(Event).filter(literal_column("string_list").contains(['hello']))
它引发了:
sqlalchemy.exc.InterfaceError: (sqlite3.InterfaceError) Error binding parameter 0 - probably unsupported type.
似乎literal_column()
丢失了声明类型的信息,因此无法再处理 ['item'] 。
有没有更好的方法来生成获取列而不是使用literal_column()
?我试过column()
- 它也不起作用。