Я пытаюсь сделать что-то чрезвычайно простое, что работает, но не так, как я ожидаю. У меня есть база данных с различными таблицами, и для каждой из этих таблиц я пытаюсь извлечь имена столбцов из информационной схемы. Я использую код ниже, и все работает как шарм (python):
import psycopg2 as pgsql
# code to connect and generate cursor
table = 'some_table_name'
query = 'SELECT column_name FROM information_schema.columns WHERE table_name = %s'
cursor.execute(query, (table,))
result = pd.DataFrame(cursor.fetchall())
print(result)
Пока все хорошо. Проблема возникает, когда я заменяю переменную запроса следующим:
import psycopg2 as pgsql
# code to connect and generate cursor
table = 'some_table_name'
**query = 'SELECT column_name FROM information_schema.columns WHERE table_name='+table
cursor.execute(query)**
result = pd.DataFrame(cursor.fetchall())
print(result)
Если я распечатываю инструкцию, она верна:
SELECT column_name FROM information_schema.columns WHERE table_name=some_table_name
Однако, когда я запускаю запрос, я 'получим это сообщение об ошибке:
UndefinedColumn: column "some_table_name" does not exist
LINE 1: ... FROM information_schema.columns WHERE table_name=some_tabl...
some_table_name - это имя таблицы в качестве параметра предложения WHERE, а не имя столбца. Как это вообще возможно?
Спасибо!