Python 无法准备[SQL Server]语句

Python 无法准备[SQL Server]语句,python,sql-server,pyodbc,Python,Sql Server,Pyodbc,这是我的密码 import pyodbc username = 'abcdefg' newPassword = 'xyz1234!' cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=abc.database.windows.net;DATABASE=master;UID=yyzzyy;PWD=abcd1234!') cursor = cnxn.cursor() cursor.execute("ALTER LOGIN ? WITH PASSWOR

这是我的密码

import pyodbc
username = 'abcdefg'
newPassword = 'xyz1234!'
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=abc.database.windows.net;DATABASE=master;UID=yyzzyy;PWD=abcd1234!')
cursor = cnxn.cursor()
cursor.execute("ALTER LOGIN ? WITH PASSWORD = ?", username, newPassword)
我得到以下错误:

pyodbc.ProgrammingError:('42000',“[42000][Microsoft][ODBC SQL “@P1”附近的服务器驱动程序][SQL Server]语法不正确。(102) (SQLExecDirectW);[42000][Microsoft][ODBC SQL Server驱动程序][SQL 无法准备服务器]语句。(8180)”


我无法使用%s或fstring,因为它有SQL注入的风险。必须用记号笔(?)凑合。请帮我解决这个问题。

登录
无法参数化;为此,您需要使用动态SQL。我想这对您来说是可行的,从SQL的角度来看是可行的(我对python的了解还不足以说明问题是否出在代码中)


登录
不能参数化;为此,您需要使用动态SQL。我想这对您来说是可行的,从SQL的角度来看是可行的(我对python的了解还不足以说明问题是否出在代码中)


SQL Server ODBC不支持根据参数化ALTER LOGIN语句-SQL Server ODBC不支持根据参数化ALTER LOGIN语句-
DECLARE @SQL nvarchar(MAX) = N'ALTER LOGIN ' + QUOTENAME(?) + N' WITH PASSWORD = N' + REPLACE(?,'''','''''') + N';';
EXEC sp_executesql @SQL;