Как удалить и создать базу данных, используя sql sanitizing - PullRequest
0 голосов
/ 13 марта 2019

cursor.execute ("DROP DATABASE?", (Имя базы данных,))

Я использую python3 с драйвером pyodbc.Только перед проблемой при создании и удалении базы данных.другие операции, такие как select, работают нормально.

Ошибка ниже: pyodbc.ProgrammingError: ('42000', u "[42000] [Microsoft] [Драйвер ODBC 17 для SQL Server] [SQL Server] Неверный синтаксис рядом с'@ P1'. (102) (SQLExecDirectW) ")

1 Ответ

2 голосов
/ 13 марта 2019

Для очистки ваших данных вы можете использовать SQL Server QUOTENAME, чтобы вернуть строку Unicode с добавленными разделителями, чтобы сделать входную строку допустимым идентификатором SQL Server с разделителями.

Вам также нужно установить autocommit=True в вашем pyodbc-соединении , чтобы разрешить удаление баз данных.

conn = pyodbc.connect("DRIVER={SQL Server};"
    "SERVER="+server+";"
    "UID="+username+";"
    "PWD="+password,
    autocommit=True)

cursor = conn.cursor()

your_database_name = "YOUR_DB_NAME"
sql_drop = (
    "DECLARE @sql AS NVARCHAR(MAX);"
    "SET @sql = 'DROP DATABASE ' + QUOTENAME(?);"
    "EXEC sp_executesql @sql"
)

cursor.execute(sql_drop, your_database_name)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...