Conexión MySQL y Python: Guía Práctica
Conexión MySQL y Python: Guía Práctica
Una de las cosas más interesantes sobre Python es que, como un lenguaje orientado a objetos,
ella obliga al desarrollador a pensar en términos de abstracción y modularización de código
mientras escribes código, lo que resulta en aplicaciones limpias y mejores
empacotadas. Entretanto, empacotar su código en funciones es simplemente el comienzo;
Python también te permite crear colecciones de fragmentos de código compartido, o
"módulos", que pueden ser importados y utilizados por cualquier programa de Python.
Poderosos, flexibles y muy interesantes, los módulos pueden ser uno de los más potentes
armas no arsenal do desenvolvedor Python... desde que eles sejam usados corretamente.
En el transcurso de este artículo, estaré explorando uno de los módulos más útiles de Python, el
módulo MySQLdb. El módulo MySQLdb permite a los desarrolladores conectar su
código Python a un servidor de base de datos MySQL, ejecutar comandos SQL en él, y
transformar los datos resultantes en un formato utilizable... y eso viene a cuento cuando
tú comienzas a desarrollar aplicaciones de Python con base de datos. Pero no creas en
mis palabras - ¡ve por ti mismo!
Lo primero que hay que hacer es asegurarse de que tiene el módulo MySQLdb instalado en su
sistema de desarrollo Python. La manera más fácil de verificar esto es a través del
interpletador interativo de linha de comando Python – como o exemplo seguinte
demuestra
$ cd MySQL-python-0.9.2
Ahora, puedes verificar si el módulo fue instalado intentando importarlo nuevamente por la
línea de comando.
Ningún problema esta vez - lo que significa que podemos continuar escribiendo
un poco de código.
Con eso fuera del camino, aquí hay un simple ejemplo que demuestra un poco de
funcionalidad del DBI. Considere la siguiente tabla de la base de datos,
y entonces considera este pequeño script de Python, que se conecta a la base de datos e imprime
los datos de la tabla.
#!/usr/bin/python
importar MySQLdb
Conecta
db = [Link](host="localhost", user="joe", passwd="secret",
db="db56a")
# Cria um cursor
cursor = [Link]()
# Ejecuta el SQL
[Link]("SELECT * FROM animals")
result = [Link]()
Tan pronto como termine, puede abrir una conexión con MySQL pasando al método
connect() del módulo una serie de parámetros de conexión - el nombre del servidor, el nombre
del usuario de la base de datos, la contraseña y el nombre de la base de datos.
Conecta
db = [Link](host="localhost", user="joe", passwd="secreto",
db="db56a")
Una conexión realizada con éxito devuelve un objeto Connection, que puedes usar
para crear un cursor.
# Crea un cursor
cursor = [Link]()
Este cursor es necesario para ejecutar una consulta SQL y para recuperar el conjunto de resultados
generado.
Ejecuta el SQL
[Link]("SELECT * FROM animals")
obtén el resultset como una tupla
result = [Link]()
También puedes usar el método fetchone() del objeto cursor para obtener y listar una
línea de cada vez, en lugar de todo de una vez. Considere el siguiente ejemplo, que
demuestra cómo debería funcionar:
#!/usr/bin/python
Conecta
db = [Link](host="localhost", user="joe", passwd="secret",
db="db56a")
Crea un cursor
cursor = [Link]()
# Ejecuta el SQL
numrows = int([Link])
En este caso, el método rowcount() del objeto cursor se utiliza primero para encontrar el
número de líneas en el conjunto de resultados. Este número se utiliza luego en un bucle "for" para iterar el
resultset, con el método fetchone() utilizado para moverse a través del resultset y
listar secuencialmente el contenido de cada línea.
#!/usr/bin/python
Conecta
db = [Link](host="localhost", user="joe", passwd="secret",
db="db56a")
Crea un cursor
cursor = [Link]()
# Ejecuta el SQL
[Link]("SELECT * FROM animals")
#!/usr/bin/python
importar MySQLdb
conecta
# Cria um cursor
cursor = [Link]()
# Ejecuta el SQL
¿Puedes modificar esto para que los valores de la cadena de consulta sean insertados por
usuario - echa un vistazo a esta variante del ejemplo anterior:
#!/usr/bin/python
Conecta
db = [Link](host="localhost", user="joe", passwd="secret",
db="db56a")
Crea un cursor
cursor = [Link]()
# Ejecuta el SQL
[Link]("INSERT INTO animals (name, species) VALUES (%s, %s)")
(nombre, especie)
Esta vez, cuando ejecutes el script, se te pedirá que ingreses los valores para ser
insertados en la base de datos.
Nota la manera con la cual las variables fueron integradas en la consulta SQL del ejemplo
acima. El símbolo "%s" se utiliza para representar cada variable en la cadena de consulta, con
los valores actuales guardados en una tupla y pasados como un segundo argumento.
#!/usr/bin/python
importar MySQLdb
Conecta
db = [Link](host="localhost", user="joe", passwd="secret",
db="db56a")
# Crea un cursor
cursor = [Link]()
# Ejecuta el SQL
[Link]("""INSERT INTO test (field1, field2) VALUES ("val1",
val2")""
Obtén el ID del último registro insertado
imprimir "ID del registro insertado es ", int(cursor.insert_id())
Muchos scripts de base de datos implican preparar una única consulta (de INSERCIÓN,
por ejemplo) y ejecutarla varias veces con diferentes valores. MySQLdb viene con el
método executemany(), que simplifica este trabalho y también puede reducir gastos de
desempeño.
Conecta
db = [Link](host="localhost", user="joe", passwd="secret",
db="db56a")
Crea un cursor
cursor = [Link]()
En este caso, la misma consulta se repite varias veces, con un grupo diferente de valores.
de cada vez. Los valores de cada iteración se pasan al método executemany() como
una lista de Python; cada elemento de la lista es una tupla que contiene los valores para cada
iteración.
Usando esta técnica, es posible escribir un script que le pide al usuario que ingrese
una serie de valores de datos, y luego insertar todos ellos en la base de datos de un fraude
solo usando el método executemany(). Esto se hace aquí abajo:
#!/usr/bin/python
si nombre == "EOF":
romper
species = raw_input("Please enter a species: ")
Conecta
db = [Link](host="localhost", user="joe", passwd="secret",
db="db56a")
# Cria um cursor
cursor = [Link]()
En este caso, se utiliza un bucle "while" continuamente para captar la entrada del usuario, con
cada grupo de valores insertados siendo empacados en una tupla y siendo añadidos
para a lista de dados. Depois que o usuário terminar de inserir todos os dados, o método
executemany() se utiliza en combinación con los varios valores introducidos por el usuario, para
INSERIR los valores dentro de la base de datos.
Algunos otros métodos que vienen con la clase MySQLdb – aquí hay una pequeña lista
dos métodos más útiles:
Y eso es todo por ahora. En este artículo, te mostré cómo configurar e instalar el módulo
MySQLdb de Python, y utilizarlo para conectar sus scripts de Python con un servidor de
banco de dados MySQL. Eu demonstrei as diferentes técnicas para iterar em um resultset,
mostré lo básico de cómo usar variables y consultas preparadas, e ilustré algunos de los
métodos contenidos en este módulo.
Nota: Todos los ejemplos de este artículo fueron probados en un Linux/i686 con Python 2.3.3.
MySQL 4.1.1a y MySQLdb 0.9.2. Los ejemplos son meramente ilustrativos, y no fueron
proyectados para un entorno de producción. Melonfire no ofrece ninguna garantía ni soporte
ao fonte distribuido neste artigo. YMMV!