Python 当条件值为空时返回所有值

Python 当条件值为空时返回所有值,python,sql,postgresql,Python,Sql,Postgresql,假设我有以下非常简单的查询: query = 'SELECT * FROM table1 WHERE id = %s' 我从python sql包装器中调用它,在本例中是psycopg: cur.execute(query, (row_id)) 问题是,如果row_id是None,我希望获取所有的行,但是该查询将返回一个空表。 实现这一点的简单方法是: if row_id: cur.execute(query, (row_id)) else: cur.execute("SEL

假设我有以下非常简单的查询:

query = 'SELECT * FROM table1 WHERE id = %s'
我从python sql包装器中调用它,在本例中是psycopg:

cur.execute(query, (row_id))
问题是,如果row_id是
None
,我希望获取所有的行,但是该查询将返回一个空表。 实现这一点的简单方法是:

if row_id:
    cur.execute(query, (row_id))
else:
    cur.execute("SELECT * FROM table1")
当然,这是非惯用的,并且对于非平凡的查询变得不必要的复杂。我想有一种方法可以在SQL本身中处理这个问题,但是找不到任何东西。正确的方法是什么?

尝试使用下面的函数

query = 'SELECT * FROM table1 WHERE id = COALESCE(%s,id)'
但根据变量转发到查询的方式,如果变量为“无”,则最好将其设为0

SELECT * FROM table1 WHERE id = %s OR %s = 0

不要在有很多记录的桌子上尝试这个。
SELECT * FROM table1 WHERE id = %s OR %s = 0