En el articulo actual vamos a crear un script para conectar Python con una base de datos MySQL.
Lo primero que tenemos que hacer es tener instalado Python, Mysql y el conector.
En mi caso para instalar python-mysql use el comando:
sudo apt-get install python-mysqldb
Base de datos
La base de datos esta basada en el siguiente codigo SQL:
[code language=”sql”]create database pyex1;
use pyex1;
create table person(
id int not null auto_increment not null primary key,
name varchar(255),
lastname varchar(255),
birth_at date,
gender varchar(1)
);
Coneccion
Para hacer la coneccion a la base de datos usamos el siguiente codigo:
[code language=”python”]import MySQLdb
db = MySQLdb.connect(host="127.0.0.1", user="root",passwd="",db="pyex1")
Lo que hacemos es importar el modulo MySQLdb y usar el metodo connect, los parametros son host(el host o servidor), user(el usuario con acceso a la base de datos), passwd(el password del usuario con acceso a la bd), db (la base de datos)
Insertar Datos
Para insertar datos usaremos las funciones cursor(), execute() y commit() de la siguiente manera:
[code language=”python”]cursor = db.cursor()
cursor.execute("insert into person(name,lastname) value(‘Agustin’,’Ramos’)");
db.commit()
La misma manera que se usa para insertar datos, se puede usar para hacer actualizaciones y eliminar, entre otras consultas que no devuelvan valores.
Seleccionar Datos
Cuando se hace una seleccion o recorrido debemos usar los metodos, cursor, execute y fetchall, y recorrer el conjunto de datos devueltos usando un ciclo for:
[code languaje=”python”]cursor = db.cursor()
cursor.execute("select * from person");
data=cursor.fetchall()
for d in data:
print "{0} – {1} {2}".format(d[0],d[1],d[2])
Recuerden que el print despues del for debe tener 4 espacios de identacion.
Les dejo un gist con todo el codigo funcional:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import MySQLdb | |
db = MySQLdb.connect(host="127.0.0.1", user="root",passwd="",db="pyex1") | |
# ejecutar consultas: insert, update, delete | |
cursor = db.cursor() | |
cursor.execute("insert into person(name,lastname) value('Agustin','Ramos')"); | |
db.commit() | |
# ejecutar consultas select | |
cursor = db.cursor() | |
cursor.execute("select * from person"); | |
data=cursor.fetchall() | |
for d in data: | |
print "{0} – {1} {2}".format(d[0],d[1],d[2]) |
Despues de ejecutar el script en la terminal debe lucir como la siguiente imagen:
Espero este ejemplo les sirva de ayuda, si les sirvio por favor dejenlo en los comentarios.
Les invito atentamente a dejarme en los comentarios propuestas para proximos articulos 🙂