如何制作pyodbc脚本,必要时可以在其中更新数据库密码

时间:2019-01-22 15:52:14

标签: python sql passwords pyodbc

我已经用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”,如何添加选项来更新它并让应用替换先前的密码?

谢谢

1 个答案:

答案 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(SETgci 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')