我有一个变量,其值由用户每次运行查询时设置。我在python中运行这个脚本,然后调用postgres数据库。我希望首先在一段sql代码中为变量赋值,然后我希望在第二段sql代码中调用该变量。
这是我目前的代码:
首先设置postgres变量的代码:
sql_stateVar=("""
tempState VARCHAR:= %s
"""
,(stateVar,))
cur.execute(*sql_stateVar)
然后在postgres中设置此变量,我将调用此存储变量:
sqlquery=("""
SELECT UPPER(b.state) AS state,
FROM opentable_full b
WHERE UPPER(b.state)=UPPER(tempState)
GROUP BY UPPER(b.state)
""")
然后我有以下代码:
outputquery = "COPY({0}) TO STDOUT WITH CSV HEADER".format(sqlquery)
with open('resultsfile', 'w') as f:
cur.copy_expert(outputquery, file=f)
我已经看到了关于在postgres中设置变量的限制的几个答案,但由于我是postgres的新手,我不确定这些答案是否是我需要的。
例如:
Is there a way to define a named constant in a PostgreSQL query?
和
How to declare local variables in postgresql?