Bueno, este articulo minimalista muestra como hacer una conexión a MySql, desde Python 3.
La libreria a usar es PyMySQL, la cual es un cliente escrito en Python, la meta de esta libreria es reemplazar a MySQLdb y poder trabajar con las diferentes implementaciones de Python (CPython 2.3+, Jython, IronPython, PyPy and Python 3).
Actualmente soporta Python 2.4+, Python 3 y MySql 4.1+.
Mi entorno de pruebas esta en Debian Squeeze, Python 3, Eric IDE.
Para poder empezar a trabajar debemos descargar la libreria del enlace . (Se asume que ya esta instaldo Python 3 y MySql). Después de descargar y descomprimir la libreria la instalamos:
Para Debian:
python3 setup.py install
con privilegios de administrador.
Para Windows:
Entrar a la carpeta que se acaba de descomprimir y luego ejectuar:
C:\Users\Jurasec\Downloads\PyMySQL3-0.4\PyMySQL3-0.4\c:\Python32\python.exe setup.py install running install running build running build_py running install_lib creating c:\Python32\Lib\site-packages\pymysql copying build\lib\pymysql\charset.py c:\Python32\Lib\site-packages\pymysql copying build\lib\pymysql\connections.py c:\Python32\Lib\site-packages\pymysql creating c:\Python32\Lib\site-packages\pymysql\constants copying build\lib\pymysql\constants\CLIENT.py -> c:\Python32\Lib\site-packages\pymysql\constants copying build\lib\pymysql\constants\COMMAND.py -> c:\Python32\Lib\site-packages\pymysql\constants
Para probar si quedo bien la instalación, abrimos el shell de Python, (el cual se ha instaldo junto con Python), y probamos importar la libreria nueva:
Ahora sí, ya vimos que esta todo correcto, por lo tanto podemos hacer nuestro script para obtener algunos datos de prueba desde el gestor:
#!/usr/bin/env python import pymysql #conn = pymysql.connect(host='127.0.0.1', unix_socket='/tmp/mysql.sock', user='root', passwd=None, db='mysql') conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='mysql', db='test') cur = conn.cursor() cur.execute("SELECT * FROM estados") print (cur.description) #r = cur.fetchall() #print (r) for r in cur.fetchall(): print ("Id: {0}, Estado: {1}".format(r[0], r[1])) cur.close() conn.close()
Como yo estoy usando eric4, pues solo voy a iniciar > Ejecutar scprit... , y el resultado es:
Al parecer no se necesita de mucho esfuerzo para ya poder empezar a trabar con este gestor. Si algo no quedo claro, podemos comentarlo.
2 comentarios:
hola:
al realizar la conexion anda perfecto, el inconveniente que encuentro es al generar una consulta con el execute, paso a pegarte el error, te da alguna idea de que puede ser?
cur.execute('select * from rubros')
Traceback (most recent call last):
File "", line 1, in
cur.execute('select * from rubros')
File "C:\Python32\lib\site-packages\pymysql\cursors.py", line 108, in execute
self.errorhandler(self, exc, value)
File "C:\Python32\lib\site-packages\pymysql\connections.py", line 182, in defaulterrorhandler
raise Error(errorclass, errorvalue)
pymysql.err.Error: (, AssertionError('Result length not requested length:\nExpected=1. Actual=0. Position: 25. Data Length: 25',))
utilizo Win7, python 3.2.2 y mysql 6.03
Saludos
Según veo es un bug, pero que ya fue corregido, que versión de la libreria descargaste?
https://github.com/petehunt/PyMySQL/issues/43
Publicar un comentario