在查询中使用占位符来定义interval绑定参数,然后在编译查询之前,将占位符替换为实际的interval值。
示例代码:
import psycopg2.extras
# 定义查询和interval变量
query = "SELECT * FROM my_table WHERE created_at > %(time_interval)s"
time_interval = datetime.timedelta(days=7)
# 将interval变量以占位符格式传递给psycopg2
cur = conn.cursor(cursor_factory=psycopg2.extras.RealDictCursor)
cur.execute(query, {'time_interval': time_interval})
# 打印查询结果
for row in cur.fetchall():
print(row)
在上述示例中,我们使用了占位符%(time_interval)s
来表示我们查询中的interval变量。然后,我们将time_interval
以字典形式传递给cur.execute()
方法,用于替换查询中的占位符。
请注意,由于PostgreSQL使用ISO 8601格式表示interval,因此您可能需要将time_interval
转换为字符串,以便正确地替换占位符。您可以使用str()
方法来转换时间间隔。