MySQL e Python

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 use sudo apt-get install python-mysqldb (for debian based distros), yum install mysql-python (for rpm-based), or dnf 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()

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *