假设我们有一个由column_1,column_2,...,column_n组成的表,所有这些都是字符串字段。我们要进行不区分大小写查询的条件存储在字典d中,例如d [column_1] =" Hello",它可能包含也可能不包含所有列。我们如何进行查询?
我查看了问题Case Insensitive Flask-SQLAlchemy Query。它包含许多令人敬畏的答案,但如果我们在运行时不知道我们有什么条件,它们都不会起作用。
答案 0 :(得分:1)
您需要构建循环遍历字典的每个键的查询。
由于您没有提供任何代码示例,我将调用表模型类TableModel
,每列将为column_1
,column_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()