Я новичок в sql alchemy.
У меня есть локальный сервер postgres, и я хочу использовать sql alchemy для создания базы данных.
У меня есть следующий код:
connection = engine.connect()
connection.execute(
text("CREATE DATABASE :database_name").bindparams(bindparam('database_name', quote=False)),
database_name="test_db"
)
Но это, к сожалению, одиночные кавычки для параметра имени базы данных, который не работает в postgres. Журналы из sql alchemy:
[SQL: CREATE DATABASE %(database_name)s]
[parameters: {'database_name': 'test_db'}]
sqlalchemy.exc.ProgrammingError: (psycopg2.errors.SyntaxError) syntax error at or near "'test_db'" LINE 1: CREATE DATABASE 'test_db`'
В журналах postgres выполняется следующий оператор, который недопустим из-за одинарных кавычек. Допустимое значение будет содержать двойные кавычки:
CREATE DATABASE 'test_db'
Есть ли способ, чтобы параметр bind не был заключен в результирующий оператор? Я не хочу делать кавычки параметров и создание строк самостоятельно, так как я думаю, что эта абстракция должна обрабатываться sql alchemy - в случае, если я изменяю свой базовый движок базы данных, например, и это выглядит как механизм, который sql alchemy продвигает, чтобы избежать sqlИнъекции тоже.
Тот же вопрос будет применяться к другим операторам postgres, таким как создание пользователя с паролем или предоставление привилегий существующему пользователю, которые все должны цитировать, специфичные для postgres.