[英]How to drop and create database using sql sanitizing
cursor.execute("DROP DATABASE ?", (databasename,)) cursor.execute(“ DROP DATABASE?”,(数据库名称,))
I am using python3 with pyodbc driver. 我正在将python3与pyodbc驱动程序配合使用。 Only facing issue while create and delete database. 仅在创建和删除数据库时面临问题。 other operations like select are working fine. 其他操作(如选择)运行良好。
Getting below error: pyodbc.ProgrammingError: ('42000', u"[42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Incorrect syntax near '@P1'. (102) (SQLExecDirectW)") 得到以下错误:pyodbc.ProgrammingError :(“ 42000”,u“ [42000] [Microsoft] [SQL Server的ODBC驱动程序17] [SQL Server]“ @ P1”附近的语法不正确。(102)(SQLExecDirectW)”)
In order to sanitize your data you can use SQL Server QUOTENAME
to returns a Unicode string with the delimiters added to make the input string a valid SQL Server delimited identifier. 为了清理数据,可以使用SQL Server QUOTENAME
返回添加了定界符的Unicode字符串,以使输入字符串成为有效的SQL Server定界标识符。
You also need to set autocommit=True
in your pyodbc connection to allow dropping of databases. 您还需要在pyodbc连接中设置autocommit=True
才能删除数据库。
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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.