0% encontró este documento útil (0 votos)
8 vistas8 páginas

Conexión MySQL y Python: Guía Práctica

El artículo explora la conectividad entre Python y MySQL utilizando el módulo MySQLdb, que permite a los desarrolladores ejecutar comandos SQL y manipular datos en una base de datos MySQL. Se presentan ejemplos prácticos de cómo instalar el módulo, realizar consultas, insertar datos y utilizar métodos como fetchall(), fetchone() y executemany(). Además, se mencionan otros métodos útiles del módulo y se proporcionan enlaces para más información sobre Python y MySQL.

Traducido por

ScribdTranslations
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
8 vistas8 páginas

Conexión MySQL y Python: Guía Práctica

El artículo explora la conectividad entre Python y MySQL utilizando el módulo MySQLdb, que permite a los desarrolladores ejecutar comandos SQL y manipular datos en una base de datos MySQL. Se presentan ejemplos prácticos de cómo instalar el módulo, realizar consultas, insertar datos y utilizar métodos como fetchall(), fetchone() y executemany(). Además, se mencionan otros métodos útiles del módulo y se proporcionan enlaces para más información sobre Python y MySQL.

Traducido por

ScribdTranslations
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Conectividad de MySQL con Python

Traductor: Douglas Soares de Andrade – dsa en unilestemg punto br


Sitio Original:[Link]

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!

En palabras de su autor, MySQLdb es 'una interfaz compatible con hilos para el


servidor popular de base de datos MySQL que proporciona la API de base de datos
Python." Desarrollado por Andy Dustman, este módulo es necesario para la conectividad
com MySQL a través de Python.

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

Python 2.3.3 (#1, 12 de mayo de 2004, 22:56:21)


[GCC 3.3.3] en linux2
Escriba "copyright", "créditos" o "license()" para más información.

>>> importar MySQLdb


Rastreo (el más interno primero):
Archivo "<stdin>", línea 1, en ?
ImportError: No hay módulo llamado MySQLdb
>>>

Si estás viendo algo parecido al mensaje de error arriba, puedes


assumir seguramente que o módulo não está instalado no seu sistema. Vá até
[Link] la última copia del módulo MySQLdb,
extraiga e instale en su sistema.
$ tar -xzvf [Link]

$ cd MySQL-python-0.9.2

$ python [Link] construir

$ python [Link] install

Ahora, puedes verificar si el módulo fue instalado intentando importarlo nuevamente por la
línea de comando.

Python 2.3.3 (#1, May 12 2004, 22:56:21)


[GCC 3.3.3] en linux2
Escribe "copyright", "créditos" o "licencia()" para más información.

>>> importar MySQLdb


>>>

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,

mysql> SELECCIONAR * DE animales;


+---------+----------+
| name | species |
+---------+----------+
| Wallace | Walrus |
| Polly | Parrot |
| Freddie | Frog |
| Tusker | Elephant |
| Sammy | Skunk |
+---------+----------+
5 filas en el conjunto (0.01 seg)

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

# Importa el módulo de MySQL

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

Toma el conjunto de resultados como una tupla

result = [Link]()

# Itera (navega) por el conjunto de resultados


para registro en resultado:
imprimir registro[0] , "-->" , registro[1]

La mayoría de este código es fácil de entender (autoexplicativo), pero de todos modos,


déjame pasar a través de él contigo.

El primer paso es importar el módulo MySQLdb, a través de la función "import" de Python.

# Importa o módulo do MySQL


importar MySQLdb

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

Algunos métodos están disponibles para recuperar el resultset de la consulta - el método


utilizado aquí es el fetchall(), que retorna una tupla de tuplas, cada tupla interna representa
uma linha do resultset. Esta tupla pode então ser iterada usando um simples loop "for", e
sus elementos impresos para la salida estándar.
Itera (navega) por el conjunto de resultados
por registro en el resultado:
imprimir registro[0] , "-->" , registro[1]

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

# Importa o módulo do MySQL


importar MySQLdb

Conecta
db = [Link](host="localhost", user="joe", passwd="secret",
db="db56a")

Crea un cursor

cursor = [Link]()

# Ejecuta el SQL

[Link]("SELECT * FROM animals")

Obtiene el número de filas en el conjunto de resultados

numrows = int([Link])

# Lista una línea a la vez


para x en rango(0,numrows):
fila = [Link]()
imprimir fila[0], "-->", fila[1]

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.

Puedes hacer que MySQLdb te dé un subconjunto específico de un conjunto de resultados con el


método fetchmany() del objeto cursor, que le permite especificar el tamaño del conjunto de resultados
retornado. Considere el siguiente ejemplo, que demuestra:

#!/usr/bin/python

# Importa el módulo de MySQL


importar MySQLdb

Conecta
db = [Link](host="localhost", user="joe", passwd="secret",
db="db56a")
Crea un cursor
cursor = [Link]()

# Ejecuta el SQL
[Link]("SELECT * FROM animals")

# Limita o resultset para 3 itens


result = [Link](3)

Itera (navega) por el conjunto de resultados


para registro en resultado:
imprimir registro[0] , "-->" , registro[1]

Obviamente, también puedes ejecutar consultas de inserción, actualización y eliminación


a través del módulo MySQLdb. Considere el siguiente ejemplo:

#!/usr/bin/python

# Importa el módulo de MySQL

importar MySQLdb

conecta

db = [Link](host="localhost", user="joe", passwd="secreto",


db="db56a")

# Cria um cursor

cursor = [Link]()

# Ejecuta el SQL

[Link]("""INSERT INTO animals (name, species) VALUES ("Harry",


Hámster

¿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

Importa el módulo de MySQL


importar MySQLdb

Recibe la entrada del usuario


name = raw_input("Please enter a name: ")
species = raw_input("Please enter a species: ")

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.

Por favor, introduce un nombre: Rollo


Please enter a species: Rat

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.

En caso de que tenga campos de auto-incremento en su base de datos, puede usar el


método insert_id() del objeto cursor para obtener el ID del último registro insertado - esto viene
a lo mejor cuando estás lidiando con tablas relacionadas en una base de datos relacional
(RDBMS), ya que los IDs recién insertados de una tabla a menudo sirven como
claves para otras tablas. El siguiente fragmento (script de Python - jejeje) debe demostrar
¿Cómo funciona esto?

#!/usr/bin/python

# Importa el módulo de MySQL

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.

Para entender cómo funciona, considera el siguiente ejemplo, que demuestra:


#!/usr/bin/python

# Importa el módulo de MySQL


importar MySQLdb

Conecta
db = [Link](host="localhost", user="joe", passwd="secret",
db="db56a")

Crea un cursor
cursor = [Link]()

# Genera consultas SQL dinámicas a partir de la lista


[Link]("INSERT INTO animals (name, species) VALUES (%s,%s)",
[["Rollo","Rata"],["Dudley","Delfín"],["Mark","Marmoset"]]
])

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

# Importa el módulo de MySQL


importar MySQLdb

# Inicializa algunas variables


name = ""
data = []

Entra en un bucle y pide la entrada del usuario


mientras (1):
name = raw_input("Please enter a name (EOF to end): ")

si nombre == "EOF":
romper
species = raw_input("Please enter a species: ")

Colocar la entrada del usuario en una tupla


tuple = (name, species)

E inserta en la lista de datos


[Link](tupla)

Conecta
db = [Link](host="localhost", user="joe", passwd="secret",
db="db56a")

# Cria um cursor
cursor = [Link]()

Gera consultas SQL dinámicas a partir de la lista de datos


[Link]("INSERTAR EN animales (nombre, especie) VALORES (%s,%s)"
datos)

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:

[Link]() - Inicia una conexión

[Link]() - Retorna el nivel de la API de base de datos actual

[Link]() - Configura las opciones de conversión de tipos MySQL y Python

[Link]() - Realiza un commit en la transacción

[Link]() - Realiza un rollback en la transacción

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.

Aunque este tutorial te permita crear scripts con Python y MySQL,


no deberías dejar de leer ahora. Aquí hay algunos enlaces que merecen ser revisados:

A página do projeto MySQLdb no SourceForge, em[Link]


python

La página de Python, en[Link]

A página do MySQL, em[Link]

Hasta la próxima... ¡sé bueno!

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!

También podría gustarte