É possível, mas não é uma boa ideia misturar código e dados (qualquer tipo - configuração, HTML etc), por pelo menos dois motivos:
- Design - você acaba com o chamado alto acoplamento . Situação em que há muitas dependências, difíceis de seguir, e seu aplicativo está cada vez mais difícil de modificar.
- Segurança - suas credenciais, mais cedo ou mais tarde, acabam em algum arquivo ou repositório de backup de código. O arquivo de configuração pode ser criptografado adicionalmente, o arquivo py não realmente. Se for um aplicativo da Web, é mais fácil restringir o acesso a um único arquivo de configuração do que a todos os arquivos py que podem ter dados confidenciais.
Você ainda pode criar essa função de manipulação de conexão separada e fácil de usar. Mas mova suas credenciais de conexão para um arquivo de configuração separado.
config.ini:
[mysqlDB]
host = '0.0.0.0'
db = 'test'
user = 'root'
pass = 'pswd'
Você pode ler a configuração em seu arquivo py de conexão ou torná-lo mais global (ou seja, singleton?). Se você quiser ler a configuração no arquivo de conexão:
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'])
Exemplo de uso:
import storage
conn = storage.connect()