dissabte, 12 de febrer del 2011

Com fer servir MySQL amb Python. Mòdul MySQL-DB

Aquest post és molt similar al'anterior, però en aquest la base de dades és MySQL. Per a desenvolupar aplicacions que facin servir MySQL amb Python, el primer pas és instal·lar algun mòdul que permeti accedir-hi amb Python.

El mòdul més popular per accedir a MySQL amb Python és MySQL-DB (http://sourceforge.net/projects/mysql-python/).

Com en d'altres ocasions, és possible instal·lar aquest mòdul a la una distribució Ubuntu des del"Centre de Programari de l'Ubuntu".

També instal·lo l'extensió de debug, tot des del "Centre de Programari de l'Ubuntu"


És imprescindible llegir la documentació (recordem que amb pydoc podrem consultar la documentació o presentar-la en format html).


La documentació online la trobem a http://mysql-python.sourceforge.net/MySQLdb.html

A continuació, repetiré el senzill experiment del post anterior que consistia en connectar-se a una base de dades existent i executar-hi consultes, però, en aquesta ocasió, fent servir una base de dades MySQL.

Primer de tot, amb l'Anjuta, creo un projecte nou del tipus Python generic.

Hi enganxaré el següent script. Remarcar-ne només l'us dels parametres charset='utf8' i use_unicode=True en el connect. SCalen per a recuperar correctament dades de tipus text que puguin tenir accents, dièresis... La resta de l'script és molt senzill i els comentaris expliquen que fa el codi.

 #!/usr/bin/python
# coding: latin-1
#

import MySQLdb
import sys


def main():
    print "Connectant a la base de dades localhost / proves"
      
    try:

        # obté una connexió, si no es pot connectar, llença una excepció
        # charset='utf8', use_unicode=True -> necessaris per a recuperar dades amb accents
        v_conn=MySQLdb.connect(host='localhost', user='root', passwd='password', db='proves', charset='utf8', use_unicode=True)
        print "Connectat!\n"
      
        # conn.cursor retorna un objecte cursor, per a fer les consultes.
        v_cur=v_conn.cursor()
      
        #executa una query
        v_cur.execute("select id,valor,traduccio from taula1")
      
        # obté totes les files
        v_files = v_cur.fetchall()

        # mostra les files
        for v_fila in v_files:
            print str(v_fila[0]) + " ; " + v_fila[1] + " ; " + v_fila[2]

        # tanca el cursor
        v_cur.close()
      
        # tanca la connexió
        v_conn.close()
 
      
    except:
    # obté informació de l'excepció
        e_exceptionType, e_exceptionValue, e_exceptionTraceback = sys.exc_info()
        # mostra la informació i acaba.
        sys.exit("error, %s" % (e_exceptionValue))

# final
if __name__ == "__main__":
    sys.exit(main())


Des del mateix Anjuta puc provar:

EXECUTING:
/home/albert/wp-python/prova-Mysql/src/python_mysql.py
----------------------------------------------
Connectant a la base de dades localhost / proves
Connectat!

1 ; valor 1 ; traducció 1
2 ; valor 2 ; traducció 2
3 ; valor 3 ; traducció 3
4 ; valor 4 ; traducció 4
5 ; valor 5 ; traducció 5
6 ; valor 6 ; traducció 6

----------------------------------------------
Program exited successfully with errcode (0)
Press the Enter key to close this terminal ...


Un senzill experiment de com accedir a MySQL amb scripts de Python fent servir el mòdul MySQLdb.

Cap comentari:

Publica un comentari a l'entrada