Para usar MySQL em Python, no Linux Slackware, que é a distribuição de Linux que eu uso, tive que instalar o módulo MySQL-python. Para Windows, Mac, ou outras distribuições de Linux, encontrei as instruções seguintes no StackOverflow:
For Windows user, you can get an exe of MySQLdb. For Linux, this is a casual package (python-mysqldb). (You can usesudo apt-get install python-mysqldb(for debian based distros),yum install mysql-python(for rpm-based), ordnf install python-mysql(for modern fedora distro) in command line to download.) For Mac, you can install MySQLdb using Macport.
Para o Slackware, fui ao sítio do SlackBuilds e descarreguei o script de compilação, assim como o código fonte do MySQL-python, que é descarregado do sítio do Python. O script cria um pacote instalável.
Criei, então, um script em Python, com o código seguinte, para imprimir todo o conteúdo de uma tabela de uma base de dados:
!/usr/bin/python
import MySQLdb
db = MySQLdb.connect(host="localhost",
user="user",
passwd="pass",
db="livros")
cur = db.cursor()
cur.execute("SELECT * FROM livro")
for row in cur.fetchall():
row = list(map(lambda x: str(x), row))
print ", ".join(row)
#print type(row)
db.close()
É aconselhável não ter as credenciais de acesso à base de dados – username e password – dentro do ficheiro de Python. A melhor solução é guardar esses dados num ficheiro noutra pasta, e depois importar esse ficheiro (ver mais informação aqui) sempre que for necessário. Eis como se importa um ficheiro em Python:
#!/usr/bin/python
import imp
dba = imp.load_source('module.dba', '/tmp/db/acessobd.py')
print dba.srv, dba.usr, dba.psw
Para mais informação e exemplos sobre o uso de MySQL em Python, nomeadamente, sobre a utilização de ORMs fica aqui o link de uma entrada no StackOverflow.
O último exemplo é uma inserção numa tabela da base de dados.
#!/usr/bin/python
# -*- coding: utf-8 -*-
import MySQLdb
import imp
dba = imp.load_source('module.dba', '/tmp/db/acessobd.py')
db = MySQLdb.connect(host="localhost",
user=dba.usr,
passwd=dba.psw,
db="livros")
cur = db.cursor()
try:
cur.execute("""INSERT INTO livro VALUES (NULL,%s,%s,%s)""",('Biblia', 'Moises', -2000))
db.commit()
except:
db.rollback()
db.close()
