Base de Detos Con Python PDF

0% encontró este documento útil (0 votos)
145 vistas36 páginas

GUÍA N° 16 BASES DE DATOS CON PYTHON MÉTODOS NUMÉRICOS

UNIVERSIDAD NACIONAL DEL ALTIPLANO


FACULTAD DE MECÁNICA ELÉCTRICA ELECTRÓNICA Y SISTEMAS
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS

CURSO: MÉTODOS NUMÉRICOS CÓDIGO: SIS211


CICLO DE ESTUDIOS: V AÑO Y SEMESTRE ACADÉMICO: 2020 – I
GUÍA N° 16: BASES DE DATOS CON PYTHON

 RESULTADOS DE APRENDIZAJE

Que el estudiante:

 Comprenda e implemente el manejo de bases de datos en MySQL con Python.

DEFINICIÓN DE BASE DE DATOS

Una base de datos es el conjunto de datos informativos organizados en un mismo contexto para su uso y
vinculación.

1
GUÍA N° 16 BASES DE DATOS CON PYTHON MÉTODOS NUMÉRICOS

2
GUÍA N° 16 BASES DE DATOS CON PYTHON MÉTODOS NUMÉRICOS

Se le llama base de datos a los bancos de información que contienen datos relativos a diversas
temáticas y categorizados de distinta manera, pero que comparten entre sí algún tipo de vínculo o relación
que busca ordenarlos y clasificarlos en conjunto.

Una base de datos puede ser de diverso tipo, desde un pequeño fichero casero para ordenar libros y
revistas por clasificación alfabética hasta una compleja base que contenga datos de índole gubernamental
en un Estado u organismo internacional. Recientemente, el término base de datos comenzó a utilizarse casi
exclusivamente en referencia a bases construidas a partir de software informático, que permiten una más
fácil y rápida organización de los datos. Las bases de datos informáticas pueden crearse a partir de software
o incluso de forma online usando Internet. En cualquier caso, las funcionalidades disponibles son
prácticamente ilimitadas.
3
GUÍA N° 16 BASES DE DATOS CON PYTHON MÉTODOS NUMÉRICOS

Las bases de datos se clasifican como estáticas - en casos en que sólo sirven para su lectura y
almacenamiento - o dinámicas - la información se modifica y puede ser actualizada -. También, según su
contenido pueden ser bibliográficas, de texto completo, directorios, o de tipo biblioteca.

4
GUÍA N° 16 BASES DE DATOS CON PYTHON MÉTODOS NUMÉRICOS
Los usos de las bases de datos son tan múltiples que, por ejemplo, pueden utilizarse en una biblioteca
o archivo que guarda libros para su consulta frecuente, pero también pueden emplearse para guardar
material biológico, como un archivo genético o un banco de esperma que almacena esperma para ser
utilizado en fertilización.

Este tipo de clasificadores contribuyen, por supuesto, a labores diarias de casi todo tipo de empleos,
como registrar las comunicaciones que se sostienen con clientes, almacenar datos de proveedores, archivar
datos, números y todo tipo de información que el usuario quiera poner en relación o encontrar fácilmente
con sólo ingresar una palabra clave.
5
GUÍA N° 16 BASES DE DATOS CON PYTHON MÉTODOS NUMÉRICOS

DEFINICIÓN DE BASE DE DATOS

Se define una base de datos como una serie de datos organizados y relacionados entre sí, los cuales
son recolectados y explotados por los sistemas de información de una empresa o negocio en particular.

CARACTERÍSTICAS

Entre las principales características de los sistemas de base de datos podemos mencionar:

 Independencia lógica y física de los datos.


 Redundancia mínima.
 Acceso concurrente por parte de múltiples usuarios.
 Integridad de los datos.
 Consultas complejas optimizadas.
 Seguridad de acceso y auditoría.
 Respaldo y recuperación.
 Acceso a través de lenguajes de programación estándar.

SISTEMA DE GESTIÓN DE BASE DE DATOS (SGBD)

Los Sistemas de Gestión de Base de Datos (en inglés DataBase Management System) son un tipo de
software muy específico, dedicado a servir de interfaz entre la base de datos, el usuario y las aplicaciones
que la utilizan. Se compone de un lenguaje de definición de datos, de un lenguaje de manipulación de datos
y de un lenguaje de consulta.

VENTAJAS DE LAS BASES DE DATOS

 CONTROL SOBRE LA REDUNDANCIA DE DATOS:

Los sistemas de ficheros almacenan varias copias de los mismos datos en ficheros distintos. Esto hace
que se desperdicie espacio de almacenamiento, además de provocar la falta de consistencia de datos.

En los sistemas de bases de datos todos estos ficheros están integrados, por lo que no se almacenan
varias copias de los mismos datos. Sin embargo, en una base de datos no se puede eliminar la redundancia
completamente, ya que en ocasiones es necesaria para modelar las relaciones entre los datos.

 CONSISTENCIA DE DATOS:

Eliminando o controlando las redundancias de datos se reduce en gran medida el riesgo de que haya
inconsistencias. Si un dato está almacenado una sola vez, cualquier actualización se debe realizar sólo una
vez, y está disponible para todos los usuarios inmediatamente. Si un dato está duplicado y el sistema conoce
esta redundancia, el propio sistema puede encargarse de garantizar que todas las copias se mantienen
consistentes.

 COMPARTIR DATOS:

En los sistemas de ficheros, los ficheros pertenecen a las personas o a los departamentos que los
utilizan. Pero en los sistemas de bases de datos, la base de datos pertenece a la empresa y puede ser
compartida por todos los usuarios que estén autorizados.
6
GUÍA N° 16 BASES DE DATOS CON PYTHON MÉTODOS NUMÉRICOS
 MANTENIMIENTO DE ESTÁNDARES:

Gracias a la integración es más fácil respetar los estándares necesarios, tanto los establecidos a nivel
de la empresa como los nacionales e internacionales. Estos estándares pueden establecerse sobre el formato
de los datos para facilitar su intercambio, pueden ser estándares de documentación, procedimientos de
actualización y también reglas de acceso.

 MEJORA EN LA INTEGRIDAD DE DATOS:

La integridad de la base de datos se refiere a la validez y la consistencia de los datos almacenados.


Normalmente, la integridad se expresa mediante restricciones o reglas que no se pueden violar. Estas
restricciones se pueden aplicar tanto a los datos, como a sus relaciones, y es el SGBD quien se debe encargar
de mantenerlas.

 MEJORA EN LA SEGURIDAD:

La seguridad de la base de datos es la protección de la base de datos frente a usuarios no autorizados.


Sin unas buenas medidas de seguridad, la integración de datos en los sistemas de bases de datos hace que
éstos sean más vulnerables que en los sistemas de ficheros.

 MEJORA EN LA ACCESIBILIDAD A LOS DATOS:

Muchos SGBD proporcionan lenguajes de consultas o generadores de informes que permiten al


usuario hacer cualquier tipo de consulta sobre los datos, sin que sea necesario que un programador escriba
una aplicación que realice tal tarea.

 MEJORA EN LA PRODUCTIVIDAD:

El SGBD proporciona muchas de las funciones estándar que el programador necesita escribir en un
sistema de ficheros. A nivel básico, el SGBD proporciona todas las rutinas de manejo de ficheros típicas de
los programas de aplicación.

El hecho de disponer de estas funciones permite al programador centrarse mejor en la función


específica requerida por los usuarios, sin tener que preocuparse de los detalles de implementación de bajo
nivel.

 MEJORA EN EL MANTENIMIENTO:

En los sistemas de ficheros, las descripciones de los datos se encuentran inmersas en los programas
de aplicación que los manejan.

Esto hace que los programas sean dependientes de los datos, de modo que un cambio en su
estructura, o un cambio en el modo en que se almacena en disco, requiere cambios importantes en los
programas cuyos datos se ven afectados.

Sin embargo, los SGBD separan las descripciones de los datos de las aplicaciones. Esto es lo que se
conoce como independencia de datos, gracias a la cual se simplifica el mantenimiento de las aplicaciones que
acceden a la base de datos.

 AUMENTO DE LA CONCURRENCIA:

En algunos sistemas de ficheros, si hay varios usuarios que pueden acceder simultáneamente a un
mismo fichero, es posible que el acceso interfiera entre ellos de modo que se pierda información o se pierda
7
GUÍA N° 16 BASES DE DATOS CON PYTHON MÉTODOS NUMÉRICOS
la integridad. La mayoría de los SGBD gestionan el acceso concurrente a la base de datos y garantizan que no
ocurran problemas de este tipo.

 MEJORA EN LOS SERVICIOS DE COPIAS DE SEGURIDAD:

Muchos sistemas de ficheros dejan que sea el usuario quien proporcione las medidas necesarias para
proteger los datos ante fallos en el sistema o en las aplicaciones. Los usuarios tienen que hacer copias de
seguridad cada día, y si se produce algún fallo, utilizar estas copias para restaurarlos.

En este caso, todo el trabajo realizado sobre los datos desde que se hizo la última copia de seguridad
se pierde y se tiene que volver a realizar. Sin embargo, los SGBD actuales funcionan de modo que se minimiza
la cantidad de trabajo perdido cuando se produce un fallo.

DESVENTAJAS DE LAS BASES DE DATOS

 COMPLEJIDAD:

Los SGBD son conjuntos de programas que pueden llegar a ser complejos con una gran funcionalidad.
Es preciso comprender muy bien esta funcionalidad para poder realizar un buen uso de ellos.

 COSTE DEL EQUIPAMIENTO ADICIONAL:

Tanto el SGBD, como la propia base de datos, pueden hacer que sea necesario adquirir más espacio
de almacenamiento. Además, para alcanzar las prestaciones deseadas, es posible que sea necesario adquirir
una máquina más grande o una máquina que se dedique solamente al SGBD. Todo esto hará que la
implantación de un sistema de bases de datos sea más cara.

 VULNERABLE A LOS FALLOS:

El hecho de que todo esté centralizado en el SGBD hace que el sistema sea más vulnerable ante los
fallos que puedan producirse. Es por ello que deben tenerse copias de seguridad (Backup).

TIPOS DE CAMPOS

Cada Sistema de Base de Datos posee tipos de campos que pueden ser similares o diferentes. Entre
los más comunes podemos nombrar:

 Numérico: entre los diferentes tipos de campos numéricos podemos encontrar enteros “sin
decimales” y reales “decimales”.
 Booleanos: poseen dos estados: Verdadero “Si” y Falso “No”.
 Memos: son campos alfanuméricos de longitud ilimitada. Presentan el inconveniente de no poder
ser indexados.
 Fechas: almacenan fechas facilitando posteriormente su explotación. Almacenar fechas de esta
forma posibilita ordenar los registros por fechas o calcular los días entre una fecha y otra.
 Alfanuméricos: contienen cifras y letras. Presentan una longitud limitada (255 caracteres).
 Autoincrementables: son campos numéricos enteros que incrementan en una unidad su valor para
cada registro incorporado. Su utilidad resulta: Servir de identificador ya que resultan exclusivos de
un registro.
8
GUÍA N° 16 BASES DE DATOS CON PYTHON MÉTODOS NUMÉRICOS

TIPOS DE BASE DE DATOS

Entre los diferentes tipos de base de datos, podemos encontrar los siguientes:
MySql: es una base de datos con licencia GPL PostgreSql y Oracle: Son sistemas de base de datos
basada en un servidor. Se caracteriza por su poderosos. Administra muy bien grandes cantidades
rapidez. No es recomendable usar para grandes de datos, y suelen ser utilizadas en intranets y
volúmenes de datos. sistemas de gran calibre.

Ms Access: Es una base de datos desarrollada por Microsoft SQL Server: es una base de datos más
Microsoft. Esta base de datos, debe ser creada potente que Ms Access desarrollada por Microsoft.
bajo el programa Ms Access, el cual crea un Se utiliza para manejar grandes volúmenes de
archivo .mdb con la estructura ya explicada. informaciones.

9
GUÍA N° 16 BASES DE DATOS CON PYTHON MÉTODOS NUMÉRICOS

CONCEPTOS BÁSICOS

1. BASE DE DATOS:
Una base de datos es todo un conjunto de información que se organiza en tablas y además se
relaciona con un asunto o tiene una finalidad, por ejemplo, si desea llevar el control de vendedores de una
empresa o dar el seguimiento de los pedidos de clientes o también administrar el control de videos, etc.

10
GUÍA N° 16 BASES DE DATOS CON PYTHON MÉTODOS NUMÉRICOS

11
GUÍA N° 16 BASES DE DATOS CON PYTHON MÉTODOS NUMÉRICOS
2. TABLA:
Una tabla es un conjunto de registros que tratan sobre un tema específico, por ejemplo: una TABLA
de productos o proveedores. Las tablas organizan los datos en columnas (Denominadas campos) y filas
(Denominadas registros). Cada fila de una tabla contiene un solo registro y es único.

3. CAMPO:
Es un nombre genérico que se asigna para indicar o representar un dato o conjunto de datos. Cada
campo contiene un fragmento de información que describe una parte única de un registro.

4. REGISTRO:
Un registro es un conjunto de campos relacionados con un mismo ente de información, así por
ejemplo: los datos personales de un alumno. Los datos sobre una pieza específica en un inventario también
conforman un registro. Es decir, que se obtiene un registro cuando se han completado los datos en todos los
campos existentes en una tabla determinada.
12
GUÍA N° 16 BASES DE DATOS CON PYTHON MÉTODOS NUMÉRICOS

5. DATO:
Es la unidad mínima de información que puede existir en una BASE DE DATOS. Un dato es cualquier
información particular, por ejemplo; la edad de una persona, la cantidad de artículos en un almacén, el sueldo
de un empleado, el largo de una pieza de madera, etc.

13
GUÍA N° 16 BASES DE DATOS CON PYTHON MÉTODOS NUMÉRICOS

INTRODUCCIÓN A MYSQL Y EL LENGUAJE SQL

1. ACERCA DE MYSQL
MySQL es un sistema de gestión de bases de datos relacional desarrollado bajo licencia dual: Licencia
pública general/Licencia comercial por Oracle Corporation y está considerada como la base de datos de
código abierto más popular del mundo, y una de las más populares en general junto a Oracle y Microsoft SQL
Server, todo para entornos de desarrollo web.

MySQL fue inicialmente desarrollado por MySQL AB (empresa fundada por David Axmark, Allan
Larsson y Michael Widenius). MySQL AB fue adquirida por Sun Microsystems en 2008, y ésta a su vez fue
comprada por Oracle Corporation en 2010, la cual ya era dueña desde 2005 de Innobase Oy, empresa
finlandesa desarrolladora del motor InnoDB para MySQL.

Al contrario de proyectos como Apache, donde el software es desarrollado por una comunidad
pública y los derechos de autor del código están en poder del autor individual, MySQL es patrocinado por
una empresa privada, que posee el copyright de la mayor parte del código. Esto es lo que posibilita el
esquema de doble licenciamiento anteriormente mencionado. La base de datos se distribuye en varias
versiones, una Community, distribuida bajo la Licencia pública general de GNU, versión 2, y varias versiones
Enterprise, para aquellas empresas que quieran incorporarlo en productos privativos. Las versiones
Enterprise incluyen productos o servicios adicionales tales como herramientas de monitorización y asistencia
técnica oficial. En 2009 se creó un fork denominado MariaDB por algunos desarrolladores (incluido algunos
desarrolladores originales de MySQL) descontentos con el modelo de desarrollo y el hecho de que una misma
empresa controle a la vez los productos MySQL y Oracle Database.

1.1. INSTALACIÓN Y CONFIGURACIÓN DE MYSQL


Para instalar MySQL, podemos descargar e instalar, a su vez tenemos la opción de elegir un paquete
de instalación, en donde tendremos el Servidor Apache, PHP y MySQL, algunas referencias:

APPSERV, WAMP O XAMP

1.1.1. APPSERV (TAILANDES)


Después de algunos años en coma, el proyecto ha despertado y nos ha sorprendido con nuevas
versiones, y algunas funciones útiles que hacen la pena probarlo, y ha demostrado que tiene desarrolladores
fieles al proyecto.

Desde: 2001-10-10

Ventajas frente a los demás

 Fácil y rápida instalación


 Herramienta para restablecer la contraseña de mysql
 Podemos decidir que instalar y que omitir, muy útil si ya tenemos alguna versión de mysql
instalada u otra base de datos instalada.
Desventaja

 No tiene interfaz de administración donde se concentren todas las opciones.

URL: [Link]
14
GUÍA N° 16 BASES DE DATOS CON PYTHON MÉTODOS NUMÉRICOS

1.1.2. WAMPWAMP (FRANCES)


Está respaldado por la empresa [Link], lo cual de alguna manera nos garantiza actualizaciones
en el software, la verdad es muy sencillo de usar.

Desde: 2004-08-03

Ventaja frente a los demás

 Proyecto respaldado por una empresa.


 Administración de módulos para Apache y extensiones para PHP de manera gráfica.
Desventaja

 Mas pasos para su instalación, pero nada complicado


 Se tiene que instalar todo (Es un inconveniente si ya tenemos alguna base de datos instalada)

URL: [Link]
15
GUÍA N° 16 BASES DE DATOS CON PYTHON MÉTODOS NUMÉRICOS

1.1.3. XAMPP
Es una distribución de Apache completamente gratuita y fácil de instalar que contiene MariaDB, PHP
y Perl. El paquete de instalación de XAMPP ha sido diseñado para ser increíblemente fácil de instalar y usar.
XAMPP tiene más de 10 años.

Ventaja frente a los demás

 Respaldado por Apache y Bitnami


 Nos permite elegir que componentes instalar, muy útil para no suplicar instalaciones
 Interfaz donde se concentran todas las opciones de administración
 Fácil instalación y rápido
Desventaja

 A pesar de ser muy administrado, no nos permite administrar PHP, sería muy bueno que se
pudieran activar o desactivar extensiones de PHP

1.1.4. BITNAMI WAMP


bitnami wampA pesar que en sus catálogos tiene a XAMPP, también maneja su proyecto propio, y es
sobre este en el que se instalan algunos proyectos open source.

Ventaja frente a los demás

 Obviamente respaldado por Bitnami


 Nos da la opción de instalar aplicaciones sobre esta instalación, Bitnami incluye un gran
catálogo de proyectos listos para usarse.
 Durante la instalación podremos seleccionar algunos frameworks de desarrollo para PHP

Desventajas

 Tenemos que instalar todos lo básico (Mysql espero no lo tenga ya instalado)


 La única interfaz que nos muestra es para iniciar, detener o reiniciar los servicios
 Muy poco administrable
16

 Tarda más que los demás para instalarse.


 Hay que configurarlo para que nos muestre los errores de PHP
GUÍA N° 16 BASES DE DATOS CON PYTHON MÉTODOS NUMÉRICOS
URL: [Link]

Como cultura general tenemos:

 LAMP es el sistema análogo que corre bajo ambiente Linux


 WAMP es el sistema análogo que corre bajo ambiente Windows
 MAMP es el sistema análogo que corre bajo ambiente Macintosh

1.2. INICIAR, REINICIAR Y DETENER EL SERVIDOR MYSQL


En ocasiones necesitarás iniciar, reiniciar o detener el servidor de bases de datos, MySQL.

Las opciones disponibles son:

 stop, detiene el servidor


 start, inicia el servidor
 restart, reinicia el servidor
Para iniciar, reiniciar o detener el servidor, deberás ejecutar el siguiente comando, seguido de la
opción deseada:

1.3. CONECTARSE Y DESCONECTARSE AL SERVIDOR


Para conectarte deberás ejecutar el siguiente comando:

mysql -u root -p

A continuación, deberás ingresar la contraseña del root de MySQL (no es la del root del SO. Es la que
hemos configurado durante la instalación de MySQL). Las -u y -p significan usuario y password
respectivamente.

Te aparecerá un shell interactivo para MySQL:

mysql>

Allí podremos escribir los comandos necesarios para administrar el servidor de bases de datos.
17
GUÍA N° 16 BASES DE DATOS CON PYTHON MÉTODOS NUMÉRICOS
1.3.1. COMANDOS PARA ADMINISTRAR MYSQL DEDE EL SHELL INTERACTIVO
La siguiente tabla describe los comandos de uso frecuente que necesitarás para administrar el
servidor de bases de datos desde el shell interactivo.

Es una buena idea, imprimir esta tabla para tenerla siempre a mano.

Comando Descripción

show databases; Muestra todas las bases de datos creadas en el servidor

use nombre_de_la_db; Indicar que vas a comenzar a utilizar la base de datos elegida

create database nombre_de_la_db; Crear una nueva base de datos

quit Salir del shell interactivo

2. SOBRE EL LENGUAJE SQL


SQL -siglas de Structured Query Language-, es el lenguaje de consultas a bases de datos, que nos
permitirá crear, modificar, consultar y eliminar tanto bases de datos como sus tablas y registros, desde el
shell interactivo de MySQL y también desde Python.

Como todo lenguaje informático, posee su propia sintaxis, tipos de datos y elementos.

2.1. TIPOS DE DATOS MÁS COMUNES (RECOMENDADOS)


La siguiente tabla, muestra los tipos de datos más comunes, aceptados por versiones la versión 5.0.3
o superior, de MySQL.

Tipo de dato Denominación Especificaciones Ejemplo

Entero INT(N) N = cantidad de dígitos INT(5)

Número decimal DECIMAL(N, D) N = cantidad de dígitos totales, D = DECIMAL(10,


cantidad de decimales 2)

Booleano BOOL BOOL

Fecha DATE DATE

Fecha y hora DATETIME DATETIME

Fecha y hora automática TIMESTAMP TIMESTAMP

Hora TIME TIME

Año YEAR(D) D = cantidad de dígitos (2 o 4) YEAR(4)

Cadena de longitud fija CHAR(N) N = longitud de la cadena (entre 0 y CHAR(2)


255)

Cadena de longitud variable VARCHAR(N) N = longitud máxima de la cadena VARCHAR(100)


(entre 0 y 65532)

Bloque de texto de gran BLOB BLOB


longitud variable
18
GUÍA N° 16 BASES DE DATOS CON PYTHON MÉTODOS NUMÉRICOS
2.2. SINTÁXIS BÁSICA DE LAS SENTENCIAS SQL
Una sentencia SQL (denominada query), es una instrucción escrita en lenguaje SQL. Veremos aquí, el
tipo de sentencias más habituales.

2.2.1. CREAR TABLAS EN UNA BASE DE DATOS


Sintaxis:

CREATE TABLE nombre_de_la_tabla(

nombre_del_campo TIPO_DE_DATO,

nombre_de_otro_campo TIPO_DE_DATO

);

Ejemplo:

CREATE TABLE productos(

producto VARCHAR(125),

descripcion BLOB,

precio DECIMAL(6, 2),

en_stock BOOL

);

Explicación:

 Crear una nueva tabla llamada productos (CREATE TABLE productos;)


 Crear un campo llamado producto, de tipo cadena de texto de longitud variable, con una longitud
máxima de 125 caracteres (producto VARCHAR(125),).
 Crear un campo llamado descripcion, de tipo bloque de texto de gran longitud (descripcion
BLOB,).
 Crear un campo precio de tipo numérico de longitud máxima de 6 digítos de los cuales, solo 2
pueden ser decimales (precio DECIMAL(6, 2),).
 Crear un campo llamado en_stock del tipo booleano (en_stock BOOL).

2.2.2. INSERTAR DATOS EN UNA TABLA


Sintaxis:

INSERT INTO

nombre_de_la_tabla(campo1, campo2, campo10..)

VALUES(dato1, dato2, dato10...);

Ejemplo:

INSERT INTO

productos(producto, precio, en_stock)

VALUES('Bolsa de dormir para alta montaña', 234.65, TRUE);


19
GUÍA N° 16 BASES DE DATOS CON PYTHON MÉTODOS NUMÉRICOS
Explicación:

 Insertar un nuevo registro en los campos producto, precio y en_stock de la tabla productos
(INSERT INTO productos(producto, precio, en_stock)).
 Con los valores Bolsa de dormir para alta montaña, 234.65 y TRUE, respectivamente en cada uno
de los campos indicados (VALUES('Bolsa de dormir para alta montaña', 234.65, TRUE);).

2.2.3. SELECCIONAR REGISTROS


Sintaxis:

SELECT campo1, campo2, campo10

FROM tabla;

Ejemplo:

SELECT producto, precio

FROM productos;

Explicación:

 Seleccionar los campos producto y precio (SELECT producto, precio).


 De la tabla productos (FROM productos;).

2.2.4. MODIFICAR REGISTROS


Sintaxis:

UPDATE tabla

SET campo1 = valor,

campo2 = valor,

campo10 = valor;

Ejemplo:

UPDATE productos

SET en_stock = FALSE,

precio = 0;

Explicación:

 Actualizar la tabla productos (UPDATE productos).


 Modificar el campo en_stock por falso (SET en_stock = FALSE,).
 Y el campo precio a 0 (precio = 0;).

2.2.5. ELIMINAR REGISTROS


Sintaxis:

DELETE FROM tabla;

Ejemplo:
20

DELETE FROM productos;


GUÍA N° 16 BASES DE DATOS CON PYTHON MÉTODOS NUMÉRICOS
Explicación:

 Eliminar todos los registros de la tabla productos (DELETE FROM productos;).

2.3. CONSULTAS AVANZADAS


No veremos aquí consultas realmente complejas, ya que el curso se basa en el lenguaje de
programación Python y no, en el lenguaje de consulta SQL, haremos un rápido paseo, por las opciones
disponibles en SQL para sentencias más complejas que las anteriores.

2.3.1. LA CLÁUSULA WHERE


Las sentencias en SQL, se componen de cláusulas. La cláusula WHERE nos permite filtrar registros en
una sentencia SQL.

Esta cláusula, funciona de forma similar a la comparación de expresiones en Python, utilizando los
siguientes operadores de comparación:

Operador Descripción Operador Descripción

> mayor que < menor que

= igual que <> distinto que

>= mayor o igual que <= menor o igual que

BETWEEN n1 AND n2 entre n1 y n2 IS NULL es nulo

IS TRUE es verdadero IS FALSE es falso

IN(valor1, valor2, va...) contiene


Por supuesto, tambien admite operadores lógicos:

 AND (y)
 NOT (negación)
 OR (o)
Veamos algunos ejemplos:

Seleccionar productos donde precio sea menor que 1000:

SELECT producto,

precio

FROM productos

WHERE precio < 1000;

Aumentar el 10% del precio de los productos, que actualmente se encuentren entre 150 y 200:

UPDATE productos

SET precio = (precio * 1.10)

WHERE precio BETWEEN 150 AND 200;


21
GUÍA N° 16 BASES DE DATOS CON PYTHON MÉTODOS NUMÉRICOS
Seleccionar productos donde en_stock no sea falso

SELECT producto,

precio

FROM productos

WHERE en_stock IS NOT FALSE;

Eliminar productos cuyos precios sean 100, 200 y/o 300 y además, en_stock sea falso o producto sea
nulo:

DELETE

FROM productos

WHERE precio IN(100, 200, 300)

AND (en_stock IS FALSE

OR producto IS NULL);

Modificar en_stock a verdadero donde precio sea menor que 50 y producto no sea nulo:

UPDATE productos

SET en_stock = TRUE

WHERE precio < 50

AND en_stock IS NOT NULL;

2.3.2. ORDENANDO CONSULTAS: LA CLÁUSULA ORDER BY


Es posible además, ordenar los resultados de una consulta, en forma ascendente (ASC) o
descendente (DESC):

SELECT producto,

descripcion,

precio

FROM productos

WHERE precio BETWEEN 1 AND 50

AND en_stock IS NOT FALSE

ORDER BY precio DESC;

También es posible, ordenar los resultados de la consulta, por más de un campo:

SELECT producto,

descripcion,

precio

FROM productos
22

WHERE precio BETWEEN 1 AND 50


GUÍA N° 16 BASES DE DATOS CON PYTHON MÉTODOS NUMÉRICOS

AND en_stock IS NOT FALSE

ORDER BY precio DESC,

producto ASC;

2.4. ALIAS DE TABLAS Y CAMPOS


Otra posibilidad que nos da el lenguaje SQL, es utilizar alias para el nombre de los campos y las tablas.
Estos alias se asignan mediante la palabra clave reservada, AS:

SELECT producto AS 'Nombre del Producto',

descripcion AS Detalles,

precio AS Importe

FROM productos AS p

WHERE precio BETWEEN 1 AND 50

AND en_stock IS NOT FALSE

ORDER BY precio DESC,

producto ASC;

Nota Nótese que los alias que contengan caracteres extraños, deben ser encerrados entre comillas
simples.

2.5. FUNCIONES DEL LENGUAJE SQL DE MYSQL


Es posible también, utilizar diversas funciones propias del lenguaje SQL -ya sea estándar o de MySQL-
a fin de poder obtener los datos con cierto formato. Veremos aquellas de uso más frecuente.

Contar la cantidad de registros: COUNT()

SELECT COUNT(producto) AS Cantidad

FROM productos;

Sumar totales: SUM()

SELECT SUM(precio) AS Total

FROM productos;

Concatenar cadenas: CONCAT()

SELECT producto,

CONCAT('USD ', precio, '.-') AS Precio

FROM productos;

Nótese que las cadenas de caracteres deben encerrarse entre comillas simples y que el operador de
concatenación para esta función, es la coma.
23
GUÍA N° 16 BASES DE DATOS CON PYTHON MÉTODOS NUMÉRICOS
Convertir a minúsculas y mayúsculas: LCASE() y UCASE()

SELECT UCASE(producto),

LCASE(descripcion)

FROM productos;

Reemplazar datos: REPLACE()

SELECT REPLACE(descripcion, '\n', '<br/>') AS Descripcion

FROM productos;

Reemplaza \n por <br/>.

Obtener los primeros o últimos caracteres: LEFT() y RIGHT()

SELECT LEFT(producto, 50)

FROM productos;

Redondear números: ROUND()

SELECT ROUND(precio, 2)

FROM productos;

Retornará los precios con 2 decimales

Obtener solo la fecha de un campo DATETIME o TIMESTAMP: DATE()

SELECT DATE(campo_datetime)

FROM tabla;

Obtener una fecha formateada: DATE_FORMAT()

SELECT DATE_FORMAT(campo_fecha, '%d/%m/%Y')

FROM tabla;

Obtener el registro con el valor máximo y mínimo: MAX() y MIN()

Retorna el producto con el precio más caro:

SELECT MAX(precio)

FROM productos;

Retorna el producto con el precio más barato

SELECT MIN(precio)

FROM productos;
24
GUÍA N° 16 BASES DE DATOS CON PYTHON MÉTODOS NUMÉRICOS
3. OPTIMIZACIÓN DE BASES DE DATOS
A continuación, encontrarás una lista de consejos que siempre debes seguir, al momento de crear
nuevas tablas y escribir sentencias SQL.

3.1. TODOS LOS REGISTROS DEBEN TENER UN ID ÚNICO


Cuando crees tablas, asígnales un campo id de tipo autonumérico incremental y establécelo como
índice primario. Cuando agregues registros, este campo se completará automáticamente, con un número
incremental, que te servirá para optimizar tus consultas y contar con un campo que te permita reconocer el
registro como único.

CREATE TABLE productos(

id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,

producto VARCHAR(125)

);

El campo id, será como cualquier otro y lo podrás seleccionar en un SELECT o utilizarlo en cualquier
cláusula WHERE.

3.2. CREAR ÍNDICES EN LAS TABLAS


Todas las tablas deben tener un índice. El índice se asigna a uno o más campos, y es utilizado por SQL
para filtrar registros de forma más rápida. Debes crear índices con precaución, ya que de la misma forma que
se aceleran las consultas, se retrasa la inserción y actualización de registros, puesto que la base de datos,
deberá actualizar los índices cada vez que se agreguen o modifiquen datos.

Cuando una consulta es ejecutada, MySQL tratará de encontrar primero la respuesta en los campos
índice, y lo hará en el orden que los índices hayan sido creados.

¿Cuándo agregar índices? Cuando vayas a utilizar una combinación de campos en la cláusula WHERE.
Por ejemplo, si filtrarás a menudo, los datos de la tabla producto por su campo precio y en_stock, que precio
y en_stock sean un índice de múltiples campos:

CREATE TABLE productos(

id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,

producto VARCHAR(125),

precio DECIMAL(10, 2),

en_stock BOOL,

descripcion BLOB,

INDEX(precio, en_stock)

);
25
GUÍA N° 16 BASES DE DATOS CON PYTHON MÉTODOS NUMÉRICOS
3.3. INDICA CUÁLES CAMPOS NO PUEDEN SER NULOS
SQL te da la posibilidad de indicar qué campos no pueden estar nulos. Indicar que un campo no debe
estar nulo, te ayudará a no almacenar registros defectuosos en tu base de datos.

CREATE TABLE productos(

id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,

producto VARCHAR(125) NOT NULL,

precio DECIMAL(10, 2) NOT NULL,

en_stock BOOL,

descripcion BLOB NOT NULL,

INDEX(precio, en_stock)

);

3.4. UTILIZA EL MOTOR INNODB


El motor de bases de datos InnoDB, te permitirá crear tablas relaciones optimizando su rendimiento.
Al momento de crear tus tablas, indica que utilizarás el motor InnoDB:

CREATE TABLE productos(

id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,

producto VARCHAR(125) NOT NULL,

precio DECIMAL(10, 2) NOT NULL,

en_stock BOOL,

descripcion BLOB NOT NULL,

INDEX(precio, en_stock)

) ENGINE=InnoDB;

26
GUÍA N° 16 BASES DE DATOS CON PYTHON MÉTODOS NUMÉRICOS
4. BASES DE DATOS RELACIONALES
Así como en la orientación a objetos, algunas clases se relacionan con otras, ya sea a través de la
herencia o la composición, cuando nuestros objetos deben guardar un almacén de datos, esa relación, debe
conservarse también en la base de datos de nuestra aplicación.

Si te fijas el siguiente esquema, puede entenderse como dos objetos con sus propiedades y a la vez,
como dos tablas, relacionadas entre sí:

Figura 1 Esquema de dos tablas relacionadas en una base de datos relacional

El objeto producto, se relaciona directamente con el objeto categoría. Esto significa que nuestros
productos, pertenecen a una categoría determinada. Se relacionan a través del campo-propiedad,
categoria_id.

Una vez que tenemos los modelos, podemos pasar a crear las tablas:
CREATE TABLE categoria(

categoria_id INT(11) NOT NULL AUTO_INCREMENT


PRIMARY KEY,

categoria VARCHAR(25) NOT NULL,

activa BOOL

) ENGINE=InnoDB;

CREATE TABLE producto(

producto_id INT(11) NOT NULL AUTO_INCREMENT


PRIMARY KEY,

categoria_id INT(11) NOT NULL,

producto VARCHAR(255) NOT NULL,

precio DECIMAL(7, 2) NOT NULL,

descripcion BLOB,

FOREIGN KEY (categoria_id)

REFERENCES categoria(categoria_id)
27

) ENGINE=InnoDB;
GUÍA N° 16 BASES DE DATOS CON PYTHON MÉTODOS NUMÉRICOS
Nota Cuando el campo de una tabla hace referencia a la clave primaria de otra tabla, se denomina
“+clave foránea o foreign key (en inglés). Para poder utilizar claves foráneas, MySQL necesita utilizar sí o sí,
el motor InnoDB ya que es el único con soporte para éstas.

Como podrás observar, el campo de la tabla producto, que hace referencia a la clave primaria de la
tabla categoría, se llama igual (categoria_id). Podría tener un nombre diferente, pero más adelante lo
veremos. Este campo, debe ser creado en la tabla, como cualquier campo común. La principal diferencia,
radica en que debemos indicar que este campo, debe ser tratado como una clave foránea.

Para ello, utilizamos la siguiente sintaxis:

FOREIGN KEY (nombre_de_la_clave_foranea)

REFERENCES tabla_relacionada(nombre_de_la_clave_primaria)

En lenguaje humano, esto se leería como sigue: la clave foránea es FK (FOREIGN KEY (FK)) que hace
referencia a la tabla TABLA a través del campo PK (REFERENCES TABLA(PK)).

Nota FK es una Foreign Key (clave foránea) mientras que PK es una Primary Key (clave primaria).

Esto significa que siempre que debamos relacionar un campo con otro, el campo relacionado deberá
indicarse como Foreign Key mientras que el campo al cuál hace referencia, deberá indicarse como Primary
Key.

Luego, podremos obtener, desde la base de datos, el objeto producto, incluyendo los datos a los
cuáles hace referencia. Para ello, utilizaremos la siguiente consulta:

SELECT producto.*, categoria.*

FROM producto INNER JOIN categoria USING(categoria_id)

Con SELECT producto.*, categoria.* estamos seleccionando todos los campos de la tabla producto y
todos los campos de la tabla categoria. Mientras que con FROM producto INNER JOIN categoria
USING(categoria_id), estamos diciendo que: desde la tabla producto unida internamente a la tabla categoria
(FROM producto INNER JOIN categoria) utilizando el campo categoria_id (USING(categoria_id)).

Cómo comentamos anteriormente, una FK no necesariamente debe llevar el mismo nombre que la
clave primaria a la cuál hace referencia. Podríamos, por ejemplo, haber creado nuestra tabla producto de la
siguiente manera:

CREATE TABLE producto(

producto_id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,

FK_categoria INT(11) NOT NULL,

producto VARCHAR(255) NOT NULL,

precio DECIMAL(7, 2) NOT NULL,

descripcion BLOB,

FOREIGN KEY (FK_categoria)

REFERENCES categoria(categoria_id)

) ENGINE=InnoDB;
28
GUÍA N° 16 BASES DE DATOS CON PYTHON MÉTODOS NUMÉRICOS
Pero en este caso, deberíamos modificar la sintaxis de nuestra consulta:

SELECT producto.*, categoria.*

FROM producto INNER JOIN categoria

ON producto.FK_categoria = categoria.categoria_id

Es decir, que ya no podemos indicarle que utilice el campo homónimo en ambas tablas, sino, que
para realizar esta unión interna se base en la condición de igualdad del valor de los mismo (campo foráneo y
primario respectivamente).

29
GUÍA N° 16 BASES DE DATOS CON PYTHON MÉTODOS NUMÉRICOS

INTRODUCCIÓN A BASES DE DATOS CON PYTHON

En Python, el acceso a bases de datos se encuentra definido a modo de estándar en las


especificaciones de DB-API. Esto, significa que independientemente de la base de datos que utilicemos, los
métodos y procesos de conexión, lectura y escritura de datos, desde Python, siempre serán los mismos, más
allá del conector.

En nuestro caso particular, utilizaremos MySQL, para lo cual, vamos a trabajar con el Conector MySQL
/ Python.

MySQL Connector / Python permite que los programas Python accedan a las bases de datos MySQL,
utilizando una API que cumple con la Especificación de la API de la base de datos de Python v2.0 (PEP 249).

pip install mysql-connector-python

1. CONECTARSE A LA BASE DE DATOS Y EJECUTAR CONSULTAS


Para conectarnos a la base de datos y ejecutar cualquier consulta, el procedimiento consiste en:

a) Abrir la conexión y crear un puntero


b) Ejecutar la consulta
c) Traer los resultados (si de una selección se trata) o hacer efectiva la escritura (cuando se inserta,
actualiza o eliminan datos)
d) Cerrar el puntero y la conexión

Nota Los resultados de una consulta de selección, se reciben en una tupla, cuyos elementos, son
otras tuplas, conteniendo el valor de cada campo seleccionado de la tabla, en el orden que han sido
30

seleccionados.
GUÍA N° 16 BASES DE DATOS CON PYTHON MÉTODOS NUMÉRICOS
1.1. UNA FORMA SIMPLE DE ACCEDER A BASES DE DATOS

import [Link]

conexion = [Link](host="localhost",
user="root",
passwd="root_007",
database="compras")
cursor = [Link]()

[Link]("select curdate()")

resultado = [Link]()

print(resultado)

[Link]()

[Link]()
31

[Link]()
GUÍA N° 16 BASES DE DATOS CON PYTHON MÉTODOS NUMÉRICOS
1.1.1. INSERTAR DATOS

import [Link]

conexion = [Link](host="localhost",
user="root",
passwd="root_007",
database="compras")
cursor = [Link]()

dato = ['','','']
dato[0] = input("Ingrese ID Categoria: ")
dato[1] = input("Ingrese Descripcion de Categoria: ")
dato[2] = input("Ingrese estado de Categoria: ")

sql="insert into categoria values(%s,%s,%s)"

[Link](sql,dato)
[Link]()
print([Link], "Registro(s) insertados.")
[Link]()
32

[Link]()
GUÍA N° 16 BASES DE DATOS CON PYTHON MÉTODOS NUMÉRICOS
1.1.2. SELECCIONAR TODOS LOS REGISTROS

import [Link]

conexion = [Link](
host="localhost",
user="root",
password="root_007",
database="compras")

mycursor = [Link]()

[Link]("SELECT * FROM categoria")

myresult = [Link]()

for x in myresult:
print(x)

[Link]()
[Link]()
33
GUÍA N° 16 BASES DE DATOS CON PYTHON MÉTODOS NUMÉRICOS
1.1.3. SELECCIONAR SOLO REGISTROS COINCIDENTES

import [Link]
conexion = [Link](
host="localhost",
user="root",
password="root_007",
database="compras")

cursor = [Link]()

criterio = ['']
criterio[0] = input("Ingrese criterio de ID categoria: ")

sql = "SELECT * FROM categoria where categoria_id=%s"

[Link](sql,criterio)

myresult = [Link]()

for x in myresult:
print(x)
34

[Link]()
[Link]()
GUÍA N° 16 BASES DE DATOS CON PYTHON MÉTODOS NUMÉRICOS
1.1.4. ELIMINAR REGISTROS

import [Link]

conexion = [Link](
host="localhost",
user="root",
password="root_007",
database="compras")

cursor = [Link]()

criterio = ['']
criterio[0] = input("Ingrese criterio de ID categoria: ")

sql = "DELETE FROM categoria where categoria_id>=%s"

[Link](sql,criterio)
[Link]()

print([Link], "Registro(s) eliminados.")

[Link]()
35

[Link]()
GUÍA N° 16 BASES DE DATOS CON PYTHON MÉTODOS NUMÉRICOS
1.1.5. ACTUALIZAR DATOS

import [Link]

conexion = [Link](
host="localhost",
user="root",
password="root_007",
database="compras")

cursor = [Link]()

criterio = ['','']
criterio[1] = input("Ingrese ID: ")
criterio[0] = input("Ingrese nueva descripcion de catagoria: ")

sql = "UPDATE categoria SET categoria=%s WHERE categoria_id = %s"


[Link](sql,criterio)
[Link]()

print([Link], "Registro(s) actualizados.")


36

[Link]()
[Link]()

GUÍA N° 16 
 BASES DE DATOS CON PYTHON  
 MÉTODOS NUMÉRICOS 
 
1 
UNIVERSIDAD NACIONAL DEL ALTIPLANO 
FACULTAD DE MECÁNICA EL
GUÍA N° 16 
 BASES DE DATOS CON PYTHON  
 MÉTODOS NUMÉRICOS 
 
2
GUÍA N° 16 
 BASES DE DATOS CON PYTHON  
 MÉTODOS NUMÉRICOS 
 
3 
 
 
Se le llama base de datos a los bancos de información q
GUÍA N° 16 
 BASES DE DATOS CON PYTHON  
 MÉTODOS NUMÉRICOS 
 
4 
 
 
 
Las bases de datos se clasifican como estáticas - en
GUÍA N° 16 
 BASES DE DATOS CON PYTHON  
 MÉTODOS NUMÉRICOS 
 
5 
Los usos de las bases de datos son tan múltiples que, por e
GUÍA N° 16 
 BASES DE DATOS CON PYTHON  
 MÉTODOS NUMÉRICOS 
 
6 
DEFINICIÓN DE BASE DE DATOS 
Se define una base de datos co
GUÍA N° 16 
 BASES DE DATOS CON PYTHON  
 MÉTODOS NUMÉRICOS 
 
7 
 
MANTENIMIENTO DE ESTÁNDARES: 
Gracias a la integración e
GUÍA N° 16 
 BASES DE DATOS CON PYTHON  
 MÉTODOS NUMÉRICOS 
 
8 
la integridad. La mayoría de los SGBD gestionan el acceso c
GUÍA N° 16 
 BASES DE DATOS CON PYTHON  
 MÉTODOS NUMÉRICOS 
 
9 
TIPOS DE BASE DE DATOS 
Entre los diferentes tipos de base
GUÍA N° 16 
 BASES DE DATOS CON PYTHON  
 MÉTODOS NUMÉRICOS 
 
10 
CONCEPTOS BÁSICOS 
1. BASE DE DATOS:  
Una base de datos e

También podría gustarte