ira*_*ira 4 python postgresql psycopg2
假设我有一个带有年龄和名称列的用户表.我想写一个函数来查询这个表,要么选择所有内容,要么根据年龄进行选择.天真,我可能会这样做
def query(age=''):
query_args = ' WHERE {}'.format(age) if age else ''
db.execute('SELECT * FROM users' + query_args)
Run Code Online (Sandbox Code Playgroud)
显然这是一个可怕的想法,但我不确定处理这种情况的更好方法是 - 如果将年龄作为参数传递或者不是,那么编写单独的查询似乎非常难看,尤其是在更复杂的示例中我可能有多个查询参数.
你是对的,建立一个查询字符串是一个可怕的想法.这个问题不是驱动程序.它只是SQL:
query = """
select *
from users
where
(%(age)s is null or %(age)s = age)
and
(%(name)s is null or %(name)s = name)
"""
parameters = dict(name = None, age = 35)
cursor.execute(query, parameters)
Run Code Online (Sandbox Code Playgroud)
如果某个参数作为null传递,则不会对其进行过滤.
| 归档时间: |
|
| 查看次数: |
562 次 |
| 最近记录: |