我已经用pyodbc创建了一个Python脚本来访问我的服务器数据库。但是,数据库的密码最终将更改,我需要一个选项来更新脚本中的密码。 到目前为止,我有
server = 'XXXXXXXX'
database = 'YYYYYYY'
username = 'ZZZZZZZZ'
password = 'ppp'
cnxn = pyodbc.connect('DRIVER={SQL Server}; SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+password)
应该将密码“ ppp”更改为“ qqq”,如何添加选项来更新它并让应用替换先前的密码?
谢谢
答案 0 :(得分:0)
请考虑使用外部资源来检索数据库凭据,包括配置.ini或.yaml文件,环境变量或odbc.ini。然后,根据需要更新此资源,并避免在脚本中对任何值进行硬编码,否则这些值会带来安全风险,尤其是在生产应用时:
YAML方法
YAML
[DATABASE]
server: 'XXXXXXXX'
database: 'YYYYYYY'
username: 'ZZZZZZZZ'
password: 'ppp'
Python
import yaml
import pyodbc
with open("data.yaml", 'r') as stream:
db_creds = yaml.load(stream)
cnxn = pyodbc.connect('DRIVER={{SQL Server}}; SERVER={server};DATABASE={database};' + \
'UID={username};PWD={password}'.format(**db_creds['DATABASE']))
环境变量方法
Unix(printenv
)或Windows(SET
或gci env
)(命令行输出)
...
DATABASE_SERVER='XXXXXXXX'
DATABASE_NAME='YYYYYYY'
DATABASE_USER='ZZZZZZZZ'
DATABASE_PWD='ppp'
...
Python
import os
import pyodbc
dbcreds = [os.environ['DATABASE_SERVER'], os.environ['DATABASE_NAME'],
os.environ['DATABASE_USER'], os.environ['DATABASE_PWD'])
cnxn = pyodbc.connect('DRIVER={{SQL Server}}; SERVER={0};DATABASE={1};' + \
'UID={2};PWD={3}'.format(*db_creds))
ODBC.ini方法
odbc.ini
[myDSN]
Driver = SQL Server
Database = 'YYYYYYY'
Servername = 'XXXXXXXX'
UserName = 'ZZZZZZZZ'
Password = 'ppp'
Python
import pyodbc
cnxn = pyodbc.connect('DSN=myDSN')