Conectar Python y MySQL

0

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:


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:


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:


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:


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:

Despues de ejecutar el script en la terminal debe lucir como la siguiente imagen:

Screenshot at 2016-07-28 22-43-12

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 🙂

LEAVE A REPLY

Time limit is exhausted. Please reload CAPTCHA.