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