sql="select %s,tablename from pg_table_def where tablename like (%s)"
data=("schemaname","abc",)
cur.execute(sql,data)
如果如上所述传递值,则选择将其作为字符串。 这不是故意的。
如果我尝试
data=(schemaname,"abc",)
然后显示错误global name 'schemaname' is not defined
。
答案 0 :(得分:2)
您不能以这种方式参数化对象名称(在这种情况下为列名称)。您可以改为使用字符串操作:
column = "schemaname"
sql = "select {}, tablename from pg_table_def where tablename like (%s)".format(column)
data= ("abc",)
cur.execute(sql,data)