Добрый день, изучаю библиотеку для работы с postgresql из python, написано в описании:
Никогда, никогда, НИКОГДА не используйте конкатенацию строк Python (+) или интерполяцию строковых параметров (%) для передачи переменных в строку запроса SQL. Даже под дулом пистолета.
Я хочу вывести из таблицы reports
, столбцы object, data
Я попытался сделать такую функцию:
def select(self, column, table):
with conn.cursor() as cursor:
stmt = sql.SQL('SELECT {} FROM {}').format(
sql.Identifier(column),
sql.Identifier(table))
cursor.execute(stmt)
for row in cursor:
print(row)
Но я получаю ошибку:
psycopg2.ProgrammingError: column "object, data" does not exist
LINE 1: SELECT "object, data" FROM "object"
Мне удалось добиться желаемого результата с помощью функции:
def select(self, column, table):
with conn.cursor() as cursor:
cursor.execute("SELECT %s FROM %s" %(column,table))
return cursor.fetchall()
Подскажите, пожалуйста, как сделать функцию без использования %s
?