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
。
您不能以这种方式参数化对象名称(在本例中为列名)。你可以使用字符串操作:
column = "schemaname"
sql = "select {}, tablename from pg_table_def where tablename like (%s)".format(column)
data= ("abc",)
cur.execute(sql,data)