gpt4 book ai didi

Python psycopg2 动态 where 子句,带有基于条件的可选 AND

转载 作者:行者123 更新时间:2023-11-29 13:11:38 25 4
gpt4 key购买 nike

这可能不是一个新问题,但在谷歌搜索和挖掘 SO 一段时间后,我一直无法找到合适的解决方案。我想根据是否设置变量将条件 AND 添加到我的 WHERE 子句中。

我可以将三进制放入字符串格式,但这似乎不是一个好的解决方案。

def run_query(start_date, end_date, value):
query = """
SELECT * FROM table WHERE value = %(value)s {date_clause}""".format(date_clause = "AND start_date >= %(start_date)s AND end_date <= %(end_date)s" if start_date is not None and end_date is not Null else "")

cursor.execute(query, {"start_date": None, "end_date": None, "value": value})

最佳答案

您可以使用 Postgres 函数 COALESCE()

query = """
SELECT *
FROM my_table
WHERE column = %(value)s
AND otherColumn = COALESCE(%(otherValue)s, '')

"""

otherValue 为 None 时,将被转换为 Postgres NULL 并且 COALESCE() 返回一个空字符串。

关于Python psycopg2 动态 where 子句,带有基于条件的可选 AND,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53899681/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com