martes, 2 de junio de 2009

Más Python con MySQL

Además del artículo publicado en Diciembre del 2008. Aquí comparto con ustedes otros códigos.

Para los que trabajan con Widow$s, les recomienda esta lista:

AppServ; les instala el Apache, PHP, MySql y el inefable PHPMyAdmin
MySQLPython; instala la librería que nos permite conectar python con MySql

Primera tarea: Crear una base de datos con PHPMyAdmin, por ejemplo pythonmysql con la tabla usuario y los campos usucod, usunom. Para los que les da flojera aquí tienen el código en SQL.

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

-- Base de datos: `pythonmysql`
CREATE DATABASE `pythonmysql` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
USE `pythonmysql`;

-- Estructura de tabla para la tabla `usuario`

DROP TABLE IF EXISTS `usuario`;
CREATE TABLE IF NOT EXISTS `usuario` (
`usucod` varchar(3) NOT NULL,
`usunom` varchar(30) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

INSERT INTO `usuario` (`usucod`, `usunom`) VALUES ('001', 'Victor Pando');
INSERT INTO `usuario` (`usucod`, `usunom`) VALUES ('002', 'Richard Stallman');

Un excelente curso de SQL es el elaborado por Jesús Vegas de la Universidad de Valladolid, si quieren estudiarlo hagan clic aquí.

Después de haber revisado el mencionado curso ahora sí podrán entender las instrucciones SQL empleadas en los siguientes programas.

PROGRAMA 01: LISTAR DATOS DE UNA TABLA
import MySQLdb
db=MySQLdb.connect(host='localhost',user='root',passwd='admin',db='pythonmysql')
cursor=db.cursor()
sql='SELECT * FROM usuario'
cursor.execute(sql)
resultado=cursor.fetchall()
print 'Datos de Usuarios'
for registro in resultado:
print registro[0],'->',registro[1]

PROGRAMA 02: INSERTAR UN REGISTRO A UNA TABLA
import MySQLdb
code=raw_input("Codigo:")
name=raw_input("Nombre:")

db=MySQLdb.connect(host='localhost',user='root',passwd='admin',db='pythonmysql')
cursor=db.cursor()
sql='INSERT INTO usuario VALUES("%s","%s")'%(code,name)
cursor.execute(sql)

PROGRAMA 03: BUSCAR UN REGISTRO EN UNA TABLA
import MySQLdb
name=raw_input("Nombre:")

db=MySQLdb.connect(host='localhost',user='root',passwd='admin',db='pythonmysql')
cursor=db.cursor()
sql='SELECT * FROM usuario WHERE usunom="%s"'%(name)
cursor.execute(sql)
resultado=cursor.fetchall()
print 'Datos de Usuarios Encontrados'
for registro in resultado:
print registro[0],'->',registro[1]

PROGRAMA 04: BUSCAR UN REGISTRO EN UNA TABLA CON UNA PARTE DE INFORMACIÓN DEL CAMPO
import MySQLdb
name=raw_input("Nombre:")
name="%"+name+"%"

db=MySQLdb.connect(host='localhost',user='root',passwd='admin',db='pythonmysql')
cursor=db.cursor()
sql='SELECT * FROM usuario WHERE usunom LIKE "%s"'%(name)
cursor.execute(sql)
resultado=cursor.fetchall()
print 'Datos de Usuarios Encontrados'
for registro in resultado:
print registro[0],'->',registro[1]

Con un poco más de paciencia pueden terminar de elaborar los programas para actualizar un registro, eliminar un registro, eliminar una tabla o una base de datos.

5 comentarios:

Prof.Luis Alfredo Villamizar López dijo...

le escribe Luis villamizar profesor de programacion del IUPFM de Venezuela, intento escribir un guion en python instale MySQldb y se instalo automaticamente en Lib\site-packages estoy usando appserv con apache 2 y mysql pero al usar el navegador no me interpreta el guion que Ud escribio aun si pruebo con otro mas sencillo en python que imprima hola mundo si lo hace,..sabe que sucede???? probe perl y si me conecte a Mysql pero me es imposible en Python en modo cliente servidor

Prof.Luis Alfredo Villamizar López dijo...

lo resolvi, ya puedo correr un script sin usar el iddle
asi como sigue:
se puede apreciar lo necesario del primer print para dar el template al script desde el cgi de appserv

#! C:\Python25\python.exe

print "Content-type:text/html\n\n"

import MySQLdb
db=MySQLdb.connect(host='localhost',user='root',passwd='root',db='ce')
cursor=db.cursor()
sql='SELECT * FROM articulos'
cursor.execute(sql)
resultado=cursor.fetchall()
print 'Datos de Usuarios'
for registro in resultado:
print registro[0],'->',registro[1]
conn.close()

Prof.Luis Alfredo Villamizar López dijo...

lo resolvi, ya puedo correr un script sin usar el iddle
asi como sigue:
se puede apreciar lo necesario del primer print para dar el template al script desde el cgi de appserv

#! C:\Python25\python.exe

print "Content-type:text/html\n\n"

import MySQLdb
db=MySQLdb.connect(host='localhost',user='root',passwd='root',db='ce')
cursor=db.cursor()
sql='SELECT * FROM articulos'
cursor.execute(sql)
resultado=cursor.fetchall()
print 'Datos de Usuarios'
for registro in resultado:
print registro[0],'->',registro[1]
conn.close()

ZNAP_ dijo...

Hola, podrias ayudarme? me base en el ejemplo para crear desde IDLE en windows este ejemplo, me aparecen los campos para insertar los datos, os ingreso, termina sin reportarme error alguno, pero al verificar con el Programa01, no tengo los datos que ingrese....podrias ayudarme diciendome cual es mi error?, envio el codigo usado, gracias!

import MySQLdb
code=raw_input("Codigo:")
name=raw_input("Nombre:")

db=MySQLdb.connect(host='localhost',user='root',passwd='marko',db='test')
cursor=db.cursor()
sql='insert into usuario (usucod,usunom) values("%s","%s");'%(code,name)
cursor.execute(sql)

ZNAP_ dijo...

He solucionado el problema, sucede que se me estaba pasando incluir commit al final del codigo...entonces quedo de esta manera:

import MySQLdb
code=raw_input("Codigo:")
name=raw_input("Nombre:")

db=MySQLdb.connect(host='localhost',user='root',passwd='marko',db='test')
cursor=db.cursor()
sql='INSERT INTO usuario VALUES("%s","%s")'%(code,name)
cursor.execute(sql)
db.commit()
cursor.close()
db.close()


Gracias por publicar este tipo de experiencias, a los que iniciarmos no es muy util.

Saludos!!