如何生成pyodbc脚本,以便在必要时更新数据库密码

2024-04-25 06:36:24 发布

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

我用pyodbc创建了一个Python脚本来访问我的服务器数据库。但是,DB的密码最终会改变,我需要在脚本中更新它。 到目前为止我已经

server = 'XXXXXXXX'
database = 'YYYYYYY'
username = 'ZZZZZZZZ'
password = 'ppp'

cnxn = pyodbc.connect('DRIVER={SQL Server}; SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+password)

如果密码“ppp”更改为“qqq”,我如何添加一个选项来更新它并让应用程序替换以前的密码?你知道吗

谢谢


Tags: 服务器脚本数据库密码dbserverusernamepassword
1条回答
网友
1楼 · 发布于 2024-04-25 06:36:24

考虑使用外部资源检索数据库凭据,包括config.ini或.yaml文件、环境变量或odbc.ini文件. 然后,根据需要更新此资源,并避免在脚本中硬编码任何值,否则会带来安全风险,尤其是在产品化应用程序时:

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')

相关问题 更多 >