Jest to możliwe, ale mieszanie kodu i danych (dowolnego rodzaju - konfiguracja, HTML itp.) nie jest dobrym pomysłem z co najmniej dwóch powodów:
- Projekt - otrzymujesz tak zwane wysokie sprzęgło . Sytuacja, w której jest wiele zależności, trudna do naśladowania, a Twoja aplikacja jest coraz trudniejsza do zmodyfikowania.
- Bezpieczeństwo — Twoje poświadczenia prędzej czy później trafią do jakiegoś archiwum lub repozytorium kopii zapasowej kodu. Plik konfiguracyjny może być dodatkowo zaszyfrowany, plik py nie. Jeśli jest to aplikacja internetowa, łatwiej jest ograniczyć dostęp do pojedynczego pliku konfiguracyjnego niż do wszystkich plików py, które mogą zawierać poufne dane.
Nadal możesz utworzyć tę oddzielną, łatwą w użyciu funkcję obsługi połączeń. Ale przenieś swoje dane uwierzytelniające połączenie do osobnego pliku konfiguracyjnego.
config.ini:
[mysqlDB]
host = '0.0.0.0'
db = 'test'
user = 'root'
pass = 'pswd'
Możesz odczytać konfigurację w pliku py połączenia lub uczynić ją bardziej globalną (np. singleton?). Jeśli chcesz odczytać konfigurację z pliku połączenia:
storage.py:
import configparser
import MySQLdb.cursors
config = configparser.ConfigParser()
config.read('config.ini')
def connect():
return MySQLdb.connect(host = config['mysqlDB']['host'],
user = config['mysqlDB']['user'],
passwd = config['mysqlDB']['pass'],
db = config['mysqlDB']['db'])
Przykład użycia:
import storage
conn = storage.connect()