使用python参数化postgresql select语句

问题描述 投票:0回答:1
sql="select %s,tablename from pg_table_def where tablename like (%s)"

data=("schemaname","abc",)

cur.execute(sql,data)

如果我传递如上所述的值,则select将其作为字符串。这不是意图。

如果我试试

data=(schemaname,"abc",)

然后它显示错误global name 'schemaname' is not defined

python postgresql aws-lambda amazon-redshift psycopg2
1个回答
2
投票

您不能以这种方式参数化对象名称(在本例中为列名)。你可以使用字符串操作:

column = "schemaname"
sql = "select {}, tablename from pg_table_def where tablename like (%s)".format(column) 
data= ("abc",)

cur.execute(sql,data)
© www.soinside.com 2019 - 2024. All rights reserved.