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()