如何使用pyodbc更改sql登录数据库的密码?

2024-05-16 06:34:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试在python中使用pyodbc更改sql登录数据库的密码

但是我在对象“@P1”(102)(SQLExecDirectW)附近得到错误语法…无法准备指令(8180)

config.login = 'user'
config.haslo = '12345'
haslo = 'abcde'
con = pyodbc.connect("DRIVER={ODBC Driver 11 for SQL Server};"
                  "SERVER=Serwer;"
                  "DATABASE=Baza;"
                  "UID="+config.login+";"
                  "PWD="+config.haslo+";"
                  "autocommit=true")
kursor = con.cursor()
zapytanie = """ALTER LOGIN ? with password = ? old_password = ?"""
val = (config.login, haslo, config.haslo)
kursor.execute(zapytanie, val)
kursor.commit()
kursor.close()
del kursor

Tags: 对象config数据库密码sqlloginvalpassword
1条回答
网友
1楼 · 发布于 2024-05-16 06:34:25

SQLServerODBC显然不支持ALTERLOGIN语句的参数化。而不是用这个。。。你知道吗

uid = 'bubba'
old_pwd = 'NASCAR'
new_pwd = 'GRITS'
sql = "ALTER LOGIN ? WITH password ? old_password ?"
crsr.execute(sql, uid, new_pwd, old_pwd)

。。。您需要执行以下操作:

uid = 'bubba'
old_pwd = 'NASCAR'
new_pwd = 'GRITS'
sql = f"ALTER LOGIN {uid} WITH PASSWORD = '{new_pwd}' OLD_PASSWORD = '{old_pwd}'"
crsr.execute(sql)

重要信息-与所有动态SQL一样,这可能容易受到SQL注入问题的影响。请务必清除登录id和密码值!你知道吗

(SQL Server的长期用户可能记得有一个名为sp_password的系统存储过程,但the documentation表示它已被弃用。)

相关问题 更多 >