параметризованный оператор выбора postgresql с использованием python - PullRequest
0 голосов
/ 01 сентября 2018
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.

1 Ответ

0 голосов
/ 01 сентября 2018

Вы не можете параметризовать имя объекта (в данном случае, имя столбца) таким образом. Вместо этого вы можете прибегнуть к манипуляции со строками:

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

cur.execute(sql,data)
...