SQLAlchemy和多列不区分大小写的查询

时间:2016-11-20 07:45:46

标签: python mysql flask sqlalchemy

假设我们有一个由column_1,column_2,...,column_n组成的表,所有这些都是字符串字段。我们要进行不区分大小写查询的条件存储在字典d中,例如d [column_1] =" Hello",它可能包含也可能不包含所有列。我们如何进行查询?

我查看了问题Case Insensitive Flask-SQLAlchemy Query。它包含许多令人敬畏的答案,但如果我们在运行时不知道我们有什么条件,它们都不会起作用。

1 个答案:

答案 0 :(得分:1)

您需要构建循环遍历字典的每个键的查询。

由于您没有提供任何代码示例,我将调用表模型类TableModel,每列将为column_1column_2等。

这样的事情应该有效:

d = {'column_1': 'some_string', 'column_3': 'another_string'}
# skipping 'column_2' just to exemplify how every column is optional in the dictionary

my_query = TableModel.query

for k in d:
    my_query = my_query.filter(getattr(TableModel, k).ilike(d[k]))

就是这样。之后,您可以将my_query用作任何其他查询,例如my_query.count()my_query.all()

相关问题