Sei sulla pagina 1di 20

Acceso a Bases de datos

Desde Python
Pablo Flores Aravena
Pablo.flores@ing.uchile.cl
Bases de datos MySql

MySQL es un sistema de gestin de bases de datos relacional desarrollado


bajo licencia dual GPL/Licencia comercial por Oracle Corporation y est
considerada como la base datos open source ms popular del mundo, y
una de las ms populares en general junto a Oracle y Microsoft SQL Server,
sobre todo para entornos de desarrollo web.

Desde el punto de vista informtico, la base de datos es un sistema


formado por un conjunto de datos almacenados en discos que permiten
el acceso directo a ellos y un conjunto de programas que manipulen ese
conjunto de datos.
Bases de datos MySql

Cada base de datos se compone de una o ms tablas que guarda un


conjunto de datos. Cada tabla tiene una o ms columnas y filas. Las columnas
guardan una parte de la informacin sobre cada elemento que queramos
guardar en la tabla, cada fila de la tabla conforma un registro.
Por consiguiente una base de datos posee el siguiente orden jerrquico:

Tablas
Campos
Registros
Lenguaje SQL
Aplicacin
Caractersticas de BD

Entre las principales caractersticas de los sistemas de base de datos


podemos mencionar:

Redundancia mnima.
Acceso concurrente por parte de mltiples usuarios.
Integridad de los datos.
Consultas complejas optimizadas.
Seguridad de acceso y auditora.
Respaldo y recuperacin.
Acceso a travs de lenguajes de programacin estndar.
Cardinalidad de las Relaciones

El diseo de relaciones entre las tablas de una base de datos puede ser la
siguiente:
Relaciones de uno a uno: un registro de la tabla A se relaciona con uno y
solamente uno de la tabla B. 1-1
Relaciones de uno a muchos: cada registro de la tabla A se relaciona con
varios registros de la tabla B. 1-n
Relaciones de muchos a muchos: cualquier registro de la tabla A se
relaciona con cualquier registro de la tabla B. n-n
Lenguaje estructurado de consultas
SQL
SQL (por sus siglas en ingls Structured Query Language) es un lenguaje
declarativo de acceso a bases de datos relacionales que permite
especificar diversos tipos de operaciones en ellas. Una de sus
caractersticas es el manejo del lgebra y el clculo relacional que
permiten efectuar consultas con el fin de recuperar, de forma sencilla,
informacin de bases de datos, as como hacer cambios en ellas.
Sentencias SQL

La sentencia INSERT de SQL agrega uno o ms registros a una (y slo una)


tabla en una base de datos relacional. Ej. INSERT INTO tabla (campo1,
campo2)VALUES ('valor1',algo')
La sentencia SELECT nos permite consultar los datos almacenados en una
tabla de la base de datos. Ej. SELECT * FROM tabla WHERE campo1=valor1
Una sentencia UPDATE de SQL es utilizada para modificar los valores de un
conjunto de registros existentes en una tabla. Ej. UPDATE tabla SET campo1 =
Nuevo valor' WHERE campo2= algo';
Una sentencia DELETE de SQL borra uno o ms registros existentes en una
tabla. Ej. DELETE FROM tabla WHERE campo1= ' Nuevo valor ';
phpMyAdmin

Para crear BD en mysql podemos utilizar la GUI


phpmyadmin ingresando a su Raspberry va web
abriendo la siguiente url.
http://localhost/phpmyadmin
Localhost puedes ser reemplazado por la ip de la
RPI.
Ingrese root como usuario de MySql y la
contrasea debe ser la misma que ingreso al
momento de instalar MySql. Si no la recuerda
debe recuperar la clave. (Revisar clase 1 de
Raspbian)
Creando mi primera BD

Para crear la base haga clic en Nueva, ingrese nombre de la BD y presione


el botn Crear
El nombre de la Base de Datos puede ser cualquiera que usted escoja
pero debe tener relacin con la informacin a contener.
Creando mi primera Tabla

Una tabla es utilizada para organizar y presentar informacin. Las tablas se


componen de filas y columnas de celdas que se pueden rellenar con
textos y grficos. Las tablas se componen de dos estructuras:
Registro: es cada una de las filas en que se divide la tabla.
Campo: es cada una de las columnas que forman la tabla

Para crear una tabla haga clic sobre la base de datos, nos pedir el
nombre de la tabla y el numero de campos
Creando Campos

Cada tabla puede contener mltiples campos de diversos tipos de datos


(int, varchar, float, date, text, boolean, etc), un campo es un espacio de
almacenamiento para un dato en particular, un campo o un conjunto
forman un registro.
En la creacin de los campos solicita el ingreso del nombre, tipo de dato,
longitud, si es ndice y si es A_I (auto incrementable)
Insertar datos

Un dato por s mismo no constituye informacin, es el procesamiento de los


datos lo que nos proporciona informacin.

Para agregar un registro (conjunto de campos) presione sobre Insertar y


complete los campos solicitados.
Python

En Python, el acceso a bases de datos se encuentra definido a modo de


estndar en las especificaciones de DB-API. Esto, significa que
independientemente de la base de datos que utilicemos, los mtodos y
procesos de conexin, lectura y escritura de datos, desde Python, siempre
sern los mismos, ms all del conector.
En nuestro caso utilizaremos MySql.
$ sudo apt-get install python-mysqldb
Pasos

Importar el mdulo de conexin (en nuestro caso, utilizaremos MySQLdb)


import MySQLdb
Conectarse a la base de datos
db_host = 'localhost'
usuario = 'root'
clave = 'clave'
base_de_datos = 'mi_basededatos'
db = MySQLdb.connect(host=db_host, user=usuario, passwd=clave,
db=base_de_datos)
Abrir un cursor
cursor = db.cursor()
Pasos

Ejecutar una consulta


mi_query = "SELECT campo FROM tabla WHERE campo='valor' ORDER BY campo"
cursor.execute(mi_query)
Si se est agregando, editando o eliminando un registro: hacer un commit a la
base de datos
db.commit()
Si se estn leyendo datos: obtener todos los registros hallados
cursor.fetchall()
u obtener solo el primero:
cursor.fetchone()
Cerrar el cursor abierto
cursor.close()
Ejercicio 1 en Python

Cree un archivo llamado pythonDb.py en la carpeta /home/pi/


Copie y pegue el cdigo del archivo descargado de u-cursos.
Para ejecutarlo corra el siguiente comando

$sudo python /home/pi/pythonDb.py


Ejercicio 2 en Python
Valores por parmetros
En el siguiente ejercicio ocuparemos el archivo anterior pero
descomentaremos las lneas que tienen el texto #descomentar
La forma de ejecutar es la siguiente
$sudo python pythonDb.py 1
Donde 1 corresponde al ID del registro en la base de datos.
Ejercicio 3 php + Python
Valores por parametros
En este ejercicio veremos como ejecutar cdigo Python desde php, los
parmetros los pasaremos por mtodo GET de php.
Cree un archivo llamado luces.php en el directorio /var/www/html/
Copie y pegue el siguiente cdigo
<?php
$id = $_GET['id'];
$salida= shell_exec('sudo python /home/pi/pythonDb.py '.$id);
echo $salida;
?>
Abra su navegador web e ingrese a la url http://localhost/luces.php?id=1 para
ver el resultado o reemplace Localhost por la direccin IP de la Raspberry.
Control de errores en Python

Los controles de error en el lenguaje de programacin sirven para evitar


cadas inesperadas del sistema.
Los controles de errores en Python son de la siguiente forma.
try:
Cdigo con posibles errores
except ValueError:
que hacer en caso que ocurra error
Busque los posibles errores en Python y contrlelos
Gracias
Dudas?

Potrebbero piacerti anche