Я работаю над проектом на Python, который взаимодействует с хранилищем данных PostgreSQL, и я использую API psycopg2. Я ищу для создания динамически типизированных таблиц.
Например: я хотел бы иметь возможность выполнить следующий код:
from psycopg2 import connect, sql
connection = connect(host="host", port="port", database="database", user="user", password="pw")
def create_table(tbl_name, col_name, col_type):
query = sql.SQL("CREATE TABLE {} ({} {})".format(sql.Identifier(tbl_name), sql.Identifier(col_name), sql.Identifier(column_type)))
connection.execute(query)
create_table('animals', 'name', 'VARCHAR')
и заканчивается таблицей с именем «animals», содержащей столбец «name» типа VARCHAR. Однако, когда я пытаюсь выполнить это, я получаю сообщение об ошибке: «тип« VARCHAR »не существует». Я предполагаю, что встроенный форматировщик psycopg2 помещает двойные кавычки вокруг типа VARCHAR, когда их не должно быть. Обычно я бы сам обошел это, но документация очень ясна, что конкатенация строк Python никогда не должна использоваться из-за боязни атак с использованием SQL-инъекций. Безопасность является проблемой для этого проекта, поэтому я хотел бы знать, возможно ли создавать таблицы с динамической типизацией таким образом, используя pyscopg2, и если нет, существует ли другой сторонний API, который может сделать это безопасно. Спасибо!
Дэнни