Как мне сделать скрипт pyodbc, где я могу обновить пароль базы данных при необходимости - PullRequest
0 голосов
/ 22 января 2019

Я создал скрипт Python с pyodbc для доступа к моей базе данных сервера.Однако пароль БД в конечном итоге изменится, и мне потребуется опция для его обновления в скрипте.Пока у меня есть

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 голосов
/ 22 января 2019

Рассмотрите возможность использования внешнего ресурса для получения учетных данных базы данных, включая файл config .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')
...