È possibile, ma non è una buona idea mescolare codice e dati (qualsiasi tipo - configurazione, HTML ecc.), per almeno due motivi:
- Design:finisci con il cosiddetto accoppiamento elevato . Situazione in cui ci sono molte dipendenze, difficili da seguire e la tua app è sempre più difficile da modificare.
- Sicurezza:le tue credenziali prima o poi finiscono in qualche archivio o repository di backup del codice. Il file di configurazione può essere ulteriormente crittografato, il file py non è proprio. Se si tratta di un'app Web, è più semplice limitare l'accesso a un singolo file di configurazione, quindi a tutti i file py che possono contenere dati sensibili.
È ancora possibile creare questa funzione di gestione della connessione separata e facile da usare. Ma sposta le tue credenziali di connessione in un file di configurazione separato.
config.ini:
[mysqlDB]
host = '0.0.0.0'
db = 'test'
user = 'root'
pass = 'pswd'
Puoi leggere la configurazione nel tuo file py di connessione o renderlo più globale (es. singleton?). Se vuoi leggere la configurazione nel file di connessione:
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'])
Esempio di utilizzo:
import storage
conn = storage.connect()