100% encontró este documento útil (1 voto)
93 vistas

SQL EN Python

Cargado por

steven perez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
100% encontró este documento útil (1 voto)
93 vistas

SQL EN Python

Cargado por

steven perez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 63

UNIVERSIDAD SANTO TOMAS DE AQUINO

DUAD
FACULTAD DE CYT
PROGRAMA INGENIERIA EN INFORMATICA

SQL EN PYTHON

REFERENTES:
APRENDIZAJE DE LENGUAJE DE PROGRAMACION PYTHON A PARTIR DEL
PENSAMIENTO LOGICO
DNDA: 10-1112-437
Fecha Registro: 10-marzo-2023

MARIO DUSTANO CONTRERAS CASTRO

INGENIERIO DE SISTEMAS

ESPECIALISTA EN MULTIMEDIA

MAESTRIA EN EDUMATICA

BOGOTA, ABRIL 2023


PARTE 1. PROGRAMACION PYTHON
1. LENGUAJE DE PROGRAMACIÓN Python
Python es un lenguaje de programación de alto nivel y multi propósito
Los programas de Python se pueden escribir en cualquier editor de texto sin formato,
como el bloc de notas , el bloc de notas ++ o cualquier cosa por el estilo. También se
puede usar un IDE en línea para escribir códigos de Python o incluso puede instalar uno
en su sistema para que sea más factible escribir estos códigos porque los IDE brindan
muchas características como editor de código intuitivo, depurador, compilador, etc.
Si la version del Python posiblemente existe a nivel de comando coloque cd path, por
ejemplo:
Cd C:\Users\AppData\Local\Programs\Python\Python38
Ahora ejecute el siguiente comando:
python –version
Si Python ya está instalado, generará un mensaje con la versión de Python disponible

.SINO ESTA INSTALADO. Descargue e instale Python:


Antes de comenzar con el proceso de instalación, debe descargarlo. Para eso, todas las
versiones de Python para Windows están disponibles en python.org .

Descargue la versión requerida y siga las instrucciones adicionales para el proceso de


instalación.
Comenzando la instalación.
 Empezando:

 Instalación de bibliotecas:

 Instalación de pip y otras características:


 Finalizacion de Instalación:

Quedando instalado de esta manera:


2. ESTRUCTURAS DE PROGRAMACION PYTHON
1. Sentencias condicionales
if condición:
else:
<condición>: : - < condicionante > ∫ <operador lógico> <condicionante>
<condicionante>: - < variable > <operador de relación> <operación>
2. Sintaxis de la sentencia for
La sintaxis del ciclo for es la siguiente:
for iterador in secuencia:
#codigo a ejecutar

Figura. Ejecución for iterador. Fuente propia


3. Sintaxis de la sentencia while
La sintaxis del ciclo while es la siguiente:
while condicion:
#codigo a ejecutar
El bucle while evalúa una condición y, si es verdadera, ejecuta el bloque de código
interno. Continúa evaluando y ejecutando mientras la condición sea verdadera. Se define
con la palabra clavewhile seguida de la condición, y a continuación el bloque de código
interno:

Figura. Ejecución sentencia while. Fuente propia


3. PROGRAMACION MODULAR PYTHON
1. Módulos en Phyton
Son archivos de texto que contienen sentencias.
Los módulos son procesados con el uso de 3 sentencias principales:
Import: Permite a un cliente importar un módulo como un todo
From: Permite obtener algo particular de un módulo.
imp.reload: Provee una forma de recargar un módulo sin reiniciar python.
2. Arquitectura de programa en Python:
•Un principal (nivel alto, script), complementado con cero o más archivos suplementarios
conocido como módulos. Entonces, el Script Principal contiene el flujo principal, con el
que se lanza la aplicación.
• Módulos: Conjunto de atributos como funciones, variables, clases. Deben ser llamados
para ejecutarse.
Usando un Módulo:
Con las sentencias import o from se utiliza un módulo como un todo o copiar parte de
este.
Sentencia import:
Obtener el modulo como un todo:
Sentencia from:
Permite copiar atributos (funciones, variables, clases) directamente al script sin cargar
todo el modulo.
Sentencia import *:
Se copian funciones, variables, objetos del módulo.

3. Las variables globales de un Módulo


Las variables globales de un módulo se inicializan antes de la primera función (def). Una
variable global comparte y actualiza su valor (referencia en otros lenguajes) en una
función mediante la cláusula global. De lo contrario, se comporta como una variable local
de una función.

Figura. Variables globales de un Módulo. Fuente propia


4. El programa main
Ejecutar una aplicación Python normalmente inicia con un script de nivel superior (o
programa principal (main program). Este ejecuta como cualquier otro modulo cargado
excepto que Python guarda el bytecode en memoria sin guardarlo a disco. El nombre del
módulo para el programa principal siempre será __main__, junto con la variable global
__name__.
La condición if __name__ == '__main__':
Orientado hacia un programa main que pregunta Si este módulo no ha sido importado
hacer lo siguiente...
Pero también, se hace uso cuando se hace un script que puede ser importado o no y se
ejecute por sí mismo....en el caso que se tenga un módulo…por ejemplo, que tiene varias
funciones y se quiere que este script pueda ser importado y las funciones puedan ser
manejadas por otro modulo, además, se quiere que también se ejecute directamente tal y
tal función (def)....
Entonces, se coloca el condicional.....
if __name__ == "__main__": #si se ejecuta directamente
funcion1(arg1, arg2) #ejecutar funcion1
funcion2()
PARTE 2. SOFTWARE WAMP SERVER
QUE ES WAMP SERVER

WAMP SERVER es un software que permite instalar de forma conjunta:

- un servidor web HTTP de código abierto para plataformas (Apache)

- un lenguaje de servidor (PHP)

- administrador de base de datos (MySQL)

- una interfaz grafica para el MySQL(phpMyAdmin)

Primer Momento. DESCARGA DE WAMP SERVER DE INTERNET

URL https://sourceforge.net/projects/wampserver/

Image 1. Descargar Wamp Server

Image 2. Descargar Wamp Server.

.
Segundo Momento. INSTALACION DE WAMP SERVER

Ejecutar

Pulsar OK

Pulsar Next
Pulsar Next

Seleccionar MariaDB 10.6.11 y MySQL 8.0.11


Pulsar Next

Pulsar Next

Pulsar Install
Boton Abrir

Boton Si
Boton Abrir

Image. Instalaciòn Wamp Server


Image. Completitud Instalaciòn Wamp Server
User: root
Password:
Iniciar sesion
Tercer Momento. CREACION DE LA BASE DE DATOS

Abra la aplicación bloc de notas, coloque el siguiente código:

DROP DATABASE IF EXISTS `encuesta`;

Se va crear una base de datos denominada encuesta entonces:

Image. Creaciòn de Base de Datos

Nombre de la base de Datos: encuesta

Esquema: Cotejamiento

Pulsar Boton Crear


Cuarto Momento. CREACION DE TABLAS

Hacer doble click sobre la base de datos encuesta

Image. Creaciòn de una Tabla

Se va crear una tabla denominada encuesta con 7 campos entonces

Image. Creaciòn de Tabla Encuesta

cedula:INT, 10,UNIQUE
Pulsar Boton Continuar
nombre:VARCHAR,30
ciudad: VARCHAR,30
domicilio: VARCHAR,30
telefono:INT, 10
idcontrato:INT, 2
idservicio:INT, 2
Image. Creaciòn de Tabla Encuesta

Se pulsa el botón Guardar


:

idservicio:INT, 2, UNIQUE
nombre:VARCHAR,30

Image. Creaciòn de Tabla Servicios


Se pulsa el botón Guardar
idcontrato:INT, 2, UNIQUE
nombre:VARCHAR,30

Image. Creaciòn de Tabla Contratos


Se pulsa el botón Guardar

Image. Tablas Diseñadas


Quinto Momento. ADMINISTRACION DE LLAVES FORANEAS

En el caso de la Tabla encuesta se tiene:

Primary key: cedula

Foreing Key: idcontrato

Foreing Key: idservicio

Debe seleccionar el botón e escribir las siguientes sentencias sql-mysql:

use `encuesta`;

ALTER TABLE encuesta ADD FOREIGN KEY ( idcontrato )

REFERENCES contratos( idcontrato ) ON DELETE CASCADE;

ALTER TABLE encuesta ADD FOREIGN KEY ( idservicio )

REFERENCES servicios( idservicio ) ON DELETE CASCADE;

Image. Sentencias SQL

Pulse el botón Continuar


Sexto Momento. ADICION DE REGISTROS

Debe seleccionar el botón e escribir las siguientes sentencias sql-mysql:


para adicionar dos registros en la tabla contratos como:
use `encuesta`;
INSERT INTO `encuesta`.`contratos` (
`idcontrato` ,
`nombre`
)
VALUES (
'01', 'Mensual'
), (
'02', 'Bimensual'
);

Image. Sentencia SQL Insert


Pulsar Botón Continuar

Image. Sentencia SQL Insert tabla encuesta


Debe seleccionar el botón e escribir las siguientes sentencias sql-mysql:
para adicionar dos registros en la tabla servicios como:
use `encuesta`;
INSERT INTO `encuesta`.`servicios` (
`idservicio` ,
`nombre`
)
VALUES (
'01', 'Familiar'
), (
'02', 'Premiere'
);

Image. Ejecucion Sentencia SQL Insert Tabla servicios

Pusar Boton Continuar

Image. Ejecucion Sentencia SQL Insert Tabla servicios


Ahora, debe seleccionar el botón e escribir las siguientes sentencias sql-
mysql: para adicionar dos registros en la encuesta:
use `encuesta`;
INSERT INTO `encuesta`.`encuesta` (
`cedula` ,
`nombre` ,
`ciudad` ,
`domicilio` ,
`telefono` ,
`idcontrato` ,
`idservicio`
)
VALUES (
'01', 'Carolina Cruz', 'Cali', 'La Quinta', '223323', '01', '02'
), (
'02', 'Natalia Paris', 'Medellin', 'Nutibara', '33333', '02', '01'
);

Image. Ejecucion Sentencia SQL Insert Tabla encuesta

Pusar Boton Continuar

Image. Ejecucion Sentencia SQL Insert Tabla encuesta


VERIFICAR EXISTENCIA DE BASE DE DATOS

Verificar la carpeta encuesta en el path \wamp64\bin\mysql\mysql8.0.31\data

Image. Verificar existencia carpeta encuesta


PARTE 3. MODELADO Y LA GESTIÓN DE BASES DE DATOS
MODELADO Y LA GESTIÓN DE BASES DE DATOS
https://www.oracle.com/co/database/what-is-a-relational-database/
https://bookdown.org/paranedagarcia/database/sql.html
CASO 1. MODELO RELACIONAL
El modelo relacional, para el modelado y la gestión de bases de datos, es un
modelo de datos basado en la lógica de predicados y en la teoría de conjuntos,
cuya idea fundamental, es el uso de relaciones en forma lógica como conjuntos
de datos llamados tuplas. Entonces se conceptualiza, cada relación como si
fuese una tabla que está compuesta por registros (cada fila de la tabla sería un
registro o “tupla”) y columnas (también llamadas “campos”).
Este modelo esta basado en que todos los datos están almacenados en tablas
(entidades/relaciones) y cada una de estas es un conjunto de datos, por tanto
una base de datos es un conjunto de relaciones. La agrupación se origina en la
tabla: tabla -> fila (tupla) -> campo (atributo)
El Modelo Relacional se ocupa de:
 La estructura de datos
 La manipulación de datos
 La integridad de los datos
Donde las relaciones estan formadas por :
 Atributos (columnas)
 Tuplas (Conjunto de filas)
Que es una base de datos relacional
Una base de datos relacional es un tipo de base de datos que almacena y
proporciona acceso a puntos de datos relacionados entre sí. Las bases de datos
relacionales se basan en el modelo relacional, una forma intuitiva y directa de
representar datos en tablas. Asi mismo, una base de datos relaciona es un
conjunto de tablas donde cada fila es un registro con un ID único llamado clave.
Las columnas de la tabla contienen atributos de los datos, y cada registro
generalmente tiene un valor para cada atributo, lo que facilita el establecimiento
de las relaciones entre los puntos de datos.
¿Cómo se estructuran las bases de datos relacionales?
El modelo relacional significa que las estructuras lógicas de datos—las tablas de
datos, vistas e índices—están separadas de las estructuras físicas de
almacenamiento. Esta separación significa que los administradores de bases de
datos pueden administrar el almacenamiento físico de datos sin afectar el
acceso a esos datos como una estructura lógica. La distinción entre lógica y
física también se aplica a las operaciones de la base de datos, que son
acciones claramente definidas que permiten a las aplicaciones manipular los
datos y las estructuras de la base de datos. Las operaciones lógicas permiten
que una aplicación especifique el contenido que necesita, mientras que las
operaciones físicas determinan cómo se debe acceder a esos datos y luego
realizan la tarea.
Para garantizar que los datos sean siempre precisos y accesibles, las bases de
datos relacionales siguen ciertas reglas de integridad. Por ejemplo, una regla de
integridad puede especificar que no se permitan filas duplicadas en una tabla,
para eliminar la posibilidad de que ingrese información errónea en la base de
datos.
CASO 2. MODELO NoSQL

El modelo NoSQL, por “not only SQL” es un modelo de almacenamiento de


datos que a diferencia del modelo relacional no es tabular sino que permite
diversos tipos según el modelo de datos. Los principales son documentos, pares
clave-valor (key-value), wide-colum, grafos. Comparten en común que son
bastante más flexibles a la hora de almacenar datos y son más fáciles de
escalar con grandes volumenes de datos.
CASO 3. MODELO DOCUMENTAL
Este modelo se basa en el almacenamiento de documentos en un formato JSON
que esta compuesto por pares campo:valor que permite datos simples y/o
complejos según su jerarquía.
-- modelo simple de documento JSON
{
name : "Carlos Araneda",
age : 29,
alias : "caraneda",
member : "Unilever",
address : "San Antonio 456, Concepción",
zipCodes : 1234,
phone: "+56978872845"
}
Los valores están constituidos por:
texto
Números (enteros y decimales)
arreglos
documentos
arreglos de documentos
Este tipo de construcción permite reducir en gran medida las “relaciones”
requeridas entre tablas en el modelo relacional.
PARTE 4. SQL
1. QUE ES SQL
https://bookdown.org/paranedagarcia/database/sql.html#sql
SQL es un lenguaje estructurado de consulta (Structured Query Language, en inglés).
diseñado específicamente para administrar información en sistemas de gestión de bases
de datos de tipo relacional.
No es un lenguaje de programación propiamente tal, como lo son Python, Java o
Javascript
Este lenguaje define tanto los inputs com outputs que son ejecutadas por el motor de
aplicaciones sobre una base de datos.
Los tipos de datos manejados por SQL incluyen:
Numéricos
Moneda
Caracter
Binario
Fecha/hora
Lógicos (booleanos)
Enumerados
Geometricos
Redes
Bit String
Texto
UUID
XML
JSON
Arreglos
Compuestos (Composite)
Rangos
Identificadores de objetos
SELECT CAST(123 AS DECIMAL(5,2)) --returns 123.00
SELECT CAST(12345.12 AS NUMERIC(10,5)) --returns 12345.12000
1.1. Tipos Numericos
Los de tipo numéricos incluyen enteros y decimales con un almacenamiento desde -
32768 a +32767 para “smallint”, hasta +9223372036854775807 para un “bigint”
1.2. Tipos Serial
Los tipos serial (serial, smallserial, bigserial no son tipos efectivos sino una convención
para anotar un identificador único auto incrementado). AUTO_INCREMENT en otras
bases de datos.
CREATE TABLE xxxx (
id SERIAL
)
1.3. Tipos Char y varchar
CHARACTER VARYING(n), VARCHAR(n)
CHARACTER (n), CHAR(n)
Tipos CAST
SELECT CAST('ABC' AS CHAR(10)) -- 'ABC ' se completa con espacios a la izquierda
SELECT CAST('ABC' AS VARCHAR(10)) -- 'ABC' sin espacios
SELECT CAST('ABCDEFGHIJKLMNOPQRSTUVWXYZ' AS CHAR(10)) -- 'ABCDEFGHIJ'
se trunca a 10 caracteres
1.4. Tipos Arrays
-- declarando un arreglo
SELECT INTEGER[];
SELECT INTEGER[3];
SELECT INTEGER[][];
SELECT INTEGER[3][3];
SELECT INTEGER ARRAY;
SELECT INTEGER ARRAY[3];
-- creando un arreglo
SELECT '{0,1,2}';
SELECT '{{0,1},{1,2}}';
SELECT ARRAY[0,1,2];
SELECT ARRAY[ARRAY[0,1],ARRAY[1,2]];
2. Definición de Datos (DDL)
Este lenguaje esta orientado a la definición de las estructuras de datos dentro de la base
de datos. Las estructuras son las tablas, índices, vistas, etc. Las funciones principales son
CREATE, ALTER y DROP (crear, modificar y eliminar respectivamente).
2.1 CREATE
CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF
NOT EXISTS ] table_name ( [
{ column_name data_type [ COMPRESSION compression_method ] [ COLLATE
collation ] [ column_constraint [ ... ] ]
| table_constraint
| LIKE source_table [ like_option ... ] }
[, ... ]
])
[ INHERITS ( parent_table [, ... ] ) ]
[ PARTITION BY { RANGE | LIST | HASH } ( { column_name | ( expression ) } [ COLLATE
collation ] [ opclass ] [, ... ] ) ]
[ USING method ]
[ WITH ( storage_parameter [= value] [, ... ] ) | WITHOUT OIDS ]
[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]
[ TABLESPACE tablespace_name ]
-- crea una base de datos y la coloca en uso
CREATE DATABASE ejemplo;
USE ejemplo;
-- crear las tablas
CREATE TABLE [database_name.][schema_name.]table_name (
pk_column data_type PRIMARY KEY,
column_1 data_type [NOT NULL][UNIQUE][UNIQUE KEY],
column_2 data_type,
...,
table_constraints
);
NOT NULL - este parámetro asegurará que la columna no almacene un valor NULL
UNIQUE - este parámetro va a prevenir que el valor de la columna sea unico.
UNIQUE KEY - este parámetro designará la columna como un identificador único.
2.2 ALTER
Modifica la estructura de una tabla sin suprimirla y volver a crearla, como añadir
columnas, eliminar columnas o cambiar definiciones de columna (por ejemplo, longitud o
los valores predeterminados).
ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ]
action [, ... ]
ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ]
RENAME [ COLUMN ] column_name TO new_column_name
ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ]
RENAME CONSTRAINT constraint_name TO new_constraint_name
ALTER TABLE [ IF EXISTS ] name
RENAME TO new_name
ALTER TABLE [ IF EXISTS ] name
SET SCHEMA new_schema
ALTER TABLE ALL IN TABLESPACE name [ OWNED BY role_name [, ... ] ]
SET TABLESPACE new_tablespace [ NOWAIT ]
ALTER TABLE [ IF EXISTS ] name
ATTACH PARTITION partition_name { FOR VALUES partition_bound_spec | DEFAULT
}
ALTER TABLE [ IF EXISTS ] name
DETACH PARTITION partition_name [ CONCURRENTLY | FINALIZE ]
-- agregar una clave primaria a un tabla
ALTER TABLE nombretabla ADD PRIMARY KEY (nombrecolumna);
2.3 DROP
-- elimina una tabla
DROP TABLE nombretabla;
-- elimina una base de datos
DROP DATABASE nombrebasededatos;
-- elimina una vista
DROP VIEW nombrevista;
2.4 TRUNCATE
Elimina los datos de una tabla sin alterar la estructura de la tabla.
TRUNCATE TABLE nombretabla;
3 Manipulación de Datos (DML)
Lleva a cabo las tareas de consultar (selección), adicionar, editar y eliminar (registros
dentro de una tabla).
• Consultar información
SELECT [ALL | DISTINCT] <seleccion> FROM <tablas>
WHERE <condiciones de seleccion> [ORDER BY <columna> [ASC | DESC]
[,<columna> [ASC | DESC]]...]
• Adicionar información
INSERT INTO <nombre tabla>
[(<nombre columna> [,<nombre columna>]...)]
VALUES (<expresion> [,<expresion>]...)
• Eliminar registros
DELETE FROM <nombre tabla> WHERE <condicion busqueda>
• Editar registros
UPDATE <nombre tabla>
SET <nombre columna> = ( <expresion> | NULL )
[, <nombre columna> = ( <expresion> | NULL )]... WHERE <condicion busqueda>
4 Ejemplos
En el primer ejemplo de código, se devuelven todas las filas (no se especifica la cláusula
WHERE) y todas las columnas (con *) de la tabla Producto de la base de datos
Produccion
SELECT *
FROM Produccion.Producto
ORDER BY Name ASC;
-- los primeros 5 registros de ordenes
SELECT * FROM ordenes LIMIT 5;
-- cuenta de los distintos productos desde ventas
SELECT count(distinct idproducto)
FROM ventas;
-- las ventas realizadas del producto id=89
SELECT idproducto, sum(cantidad) as total
FROM ventas
WHERE idproducto = 89;
-- titulo y el año de estreno de las películas emitidas en 1990 y 2000 y con una duración
mayor a dos horas.
SELECT titulo, year
FROM peliculas
WHERE year IN (1990,2000)
AND duracion > 120
-- el titulo e idioma de las películas con idioma ingles, español o francés
SELECT titulo, idioma
FROM peliculas
WHERE idioma IN ('English', 'French', 'Spanish')
-- Obtenga todos los detalles de las películas en español estrenadas después del 2000,
pero antes del 2010
SELECT * FROM peliculas
WHERE idioma = 'Spanish'
AND year > 2000
AND year < 2010
-- Obtener el porcentaje de personas que ya no están vivas. Alias el resultado como
porcentaje_muerto. ¡Recuerda usar 100.0 y no 100!
SELECT (count(muerte)*100.0)/count(*) AS porcentaje_muerto
FROM persona
-- numero de años entre la película mas vieja y la mas nueva. establezca el resultado
como ‘diferencia’
SELECT max(year) - min(year) AS diferencia
FROM peliculas
-- condición múltiple
SELECT *
FROM clientes
WHERE ciudad = 'Concepción' AND edad >= 45
AND fecha IS NOT NULL
-- condición múltiple
SELECT *
FROM clientes
WHERE (ciudad = 'Concepción' AND edad >= 45 OR estado = TRUE)
AND fecha IS NOT NULL
Ejemplos con funciones
-- el total de productos vendidos
SELECT sum(cantidad)
FROM ventas;
-- la mayor cantidad de venta de un producto
SELECT max(cantidad)
FROM ventas;
-- total de unidades vendidas por producto (los primeros 5 más vendidos)
SELECT idproducto, sum(cantidad) as total
FROM ventas
GROUP BY idproducto
HAVING cantidad > 0
ORDER BY total DESC
LIMIT 5;
-- cuantas consultas por usuario medico (simple)
SELECT count(idmedico), ex_idm as medicos
FROM consultas c
GROUP BY idmedico
-- lista de edades y cantidad de pacientes para cada edad
SELECT DISTINCT count(*),pa_edad
FROM bio_pacientes bp GROUP BY pa_edad
ORDER BY pa_edad
-- Encontrar la mayor diferencia en el total de puntajes de todas las tareas. Mostrar la
diferencia.
SELECT MAX(puntaje)-MIN(puntaje) AS diferencia FROM
(SELECT student,
SUM(tarea1 + tarea2 + tarea3) AS puntaje
FROM clase_puntajes
GROUP BY student) a;
-- Los empleados quereciben más de un bono.
SELECT e.employee_title, e.sex,
AVG(e.salary + b.ttl_bonus) AS avg_compensation FROM sf_employee e
INNER JOIN
(SELECT worker_ref_id,
SUM(bonus) AS ttl_bonus
FROM sf_bonus
GROUP BY worker_ref_id) b ON e.id = b.worker_ref_id GROUP BY employee_title, sex;
-- Número de tiendas abierta en domingo
SELECT sunday, COUNT(*) AS total_business
FROM yelp_business_hours bh
LEFT JOIN yelp_business b ON bh.business_id = b.business_id
WHERE sunday IS NOT NULL
AND is_open = 1
GROUP BY sunday
ORDER BY total_business DESC;
PARTE 5. CONECTOR MYSQL EN PYTHON
¿Cómo instalar PIP en Windows?
https://barcelonageeks.com/como-instalar-pip-en-windows/
Posted on julio 5, 2022by Rudeus Greyrat
PIP es un sistema de administración de paquetes que se utiliza para instalar y administrar
paquetes/bibliotecas de software escritos en Python. Estos archivos se almacenan en un
gran «repositorio en línea» denominado Python Package Index (PyPI). pip usa PyPI como
la fuente predeterminada para los paquetes y sus dependencias. Así que cada vez que
escriba:
pip install package_name
pip buscará ese paquete en PyPI y, si lo encuentra, lo descargará e instalará en su
sistema local.
Descargar e instalar pip
El PIP se puede descargar e instalar usando la línea de comando siguiendo los siguientes
pasos:
Método 1: Instalar en Linux
Curl es un comando de Linux que se usa para enviar requests PUT, GET y POST a una
URL. Esta herramienta se utiliza para descargar archivos, probar API REST , etc.
Paso 1: abre la terminal cmd
Paso 2: en Python, un curl es una herramienta para transferir requests de datos hacia y
desde un servidor. Use el siguiente comando para solicitar:
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py

Método 2: instalacion en Windows


Pip debe instalarse paso a paso en Windows. Es posible que deba usar la versión
correcta del archivo de pypa.org si está usando una versión anterior de Python o pip.
Obtenga el archivo y guárdelo en una carpeta en su PC.
Paso 1: Descargue el archivo get-pip.py (https://bootstrap.pypa.io/get-pip.py) y
guárdelo en el mismo directorio donde está instalado Python.
Paso 2: cambie la ruta actual del directorio en la línea de comando a la ruta del directorio
donde se encuentra el archivo anterior, por ejemplo:
cd C:\Users\AppData\Local\Programs\Python\Python38

Paso 3: get-pip.py es un script de arranque que permite a los usuarios instalar pip en
entornos de Python. Ejecute el comando python get-pip.py

Paso 4: Esperar el proceso de instalación.

Ahora está instalado en su sistema.


Verificación del proceso de instalación
Uno puede verificar fácilmente si el pip se ha instalado correctamente al realizar una
verificación de versión en el mismo. Simplemente vaya a la línea de comando y ejecute el
siguiente comando:
cd scripts
pip –v

Adición de PIP a variables de entorno de Windows


Si se enfrenta a algún error de ruta, puede seguir los siguientes pasos para agregar el pip
a su RUTA. Puede seguir los siguientes pasos para establecer la Ruta:
 Vaya a Sistema y seguridad > Sistema en el Panel de control una vez que se haya
abierto.

 En el lado izquierdo, haga clic en el enlace Configuración avanzada del sistema.


 A continuación, seleccione Variables de entorno.

 Haga doble clic en la variable PATH en Variables del sistema.

 Haga clic en Nuevo y agregue el directorio donde está instalado pip, por ejemplo,
C:\Users\AppData\Local\Programs\Python\Python38\Scripts, y seleccione Aceptar.

Actualización de Pip en Windows


pip se puede actualizar con el siguiente comando.
python -m pip install -U pip
¿Cómo instalar el paquete del conector MySQL en Python?
https://barcelonageeks.com/como-instalar-el-paquete-del-conector-mysql-en-
python/
Posted on julio 5, 2022by Rudeus Greyrat

MySQL es un sistema de administración de bases de datos relacionales (RDBMS),


mientras que el lenguaje de consulta estructurado (SQL) es el lenguaje utilizado para
manejar el RDBMS mediante comandos, es decir, crear, insertar, actualizar y eliminar los
datos de las bases de datos.
Se emplea un conector cuando tenemos que usar MySQL con otros lenguajes de
programación. El trabajo de mysql-connector es proporcionar acceso al controlador
MySQL en el idioma requerido. Así, genera una conexión entre el lenguaje de
programación y el Servidor MySQL.

Instalacion en Windows. mysql-connector se puede con el uso del siguiente comando:


pip install mysql-connector-python

Instalacion en linux. Con el siguiente comando:


pip3 install mysql-connector
PARTE 6. MODULOS SQL EN PYTHON
MODULO sqldb
Traducción desde: http://mysql-python.sourceforge.net/MySQLdb.html
_mysql
_mysql proporciona una interfaz que implementa API MySQL con lenguaje C (Módulo
SQLite).
Traducción API MySQL C
El API C de MySQL ha sido desarrollado bajo el paradigma orientado a objetos. Las
únicas estructuras de datos MySQL, que se aplican son los de tipos MySQL (conexión a
base de datos) y MYSQL_RES (manejador del resultset) tipos. En general, cualquier
función que toma MYSQL * mysql como argumento es ahora un método del objeto de
conexión, y cualquier función que toma MYSQL_RES * es un argumento de un objeto
resultset. Las Funciones que no requieren ninguna de las estructuras de datos de MySQL
se implementan como funciones en un módulo. Funciones que requieren una de las otras
estructuras de datos MySQL en general, no se aplican. Funciones obsoletas no se
implementan. En todos los casos, el prefijo mysql_ se aplica con su respectivo método. La
mayoría de los métodos enumerados conn también están disponibles como métodos del
objeto Connection MySQLdb. Su uso no es portátil.
MySQL C correlación de funciones de la API
C API (Módulo SQLite) _mysql
mysql_affected_rows () conn.affected_rows ()
mysql_autocommit () conn.autocommit ()
mysql_character_set_name () conn.character_set_name ()
mysql_close () conn.close ()
mysql_commit () conn.commit ()
mysql_connect () _mysql.connect ()
mysql_data_seek () result.data_seek ()
mysql_debug () _mysql.debug ()
mysql_dump_debug_info conn.dump_debug_info ()
mysql_escape_string () _mysql.escape_string ()
mysql_fetch_row () result.fetch_row ()
mysql_get_character_set_info () conn.get_character_set_info ()
mysql_get_client_info () _mysql.get_client_info ()
mysql_get_host_info () conn.get_host_info ()
mysql_get_proto_info () conn.get_proto_info ()
mysql_get_server_info () conn.get_server_info ()
mysql_info () conn.info ()
mysql_insert_id () conn.insert_id ()
mysql_num_fields () result.num_fields ()
mysql_num_rows () result.num_rows ()
mysql_options () varias opciones para _mysql.connect ()
mysql_ping () conn.ping ()
mysql_query () conn.query ()
C API (Módulo SQLite) _mysql
mysql_real_connect () _mysql.connect ()
mysql_real_query () conn.query ()
mysql_real_escape_string () conn.escape_string ()
mysql_rollback () conn.rollback ()
mysql_row_seek () result.row_seek ()
mysql_row_tell () result.row_tell ()
mysql_select_db () conn.select_db ()
mysql_set_character_set () conn.set_character_set ()
mysql_ssl_set () opción ssl para _mysql.connect ()
mysql_stat () conn.stat ()
mysql_store_result () conn.store_result ()
mysql_thread_id () conn.thread_id ()
mysql_thread_safe_client () conn.thread_safe_client ()
mysql_use_result () conn.use_result ()
mysql_warning_count () conn.warning_count ()
Client_ * MySQLdb.constants.CLIENT. *
CR_ * MySQLdb.constants.CR. *
ER_ * MySQLdb.constants.ER. *
FIELD_TYPE_ * MySQLdb.constants.FIELD_TYPE. *
Flag_ * MySQLdb.constants.FLAG. *
Conexión Bases de Datos _mysql
La conexión más sencilla es:
import _mysql
db = _mysql.connect ()
Esto crea una conexión con el servidor MySQL se ejecuta en la máquina local utilizando
conexión con nombre en Windows, su nombre de usuario (a partir de la variable de
entorno USER), sin contraseña, y no utiliza una base de datos.
La manera más completa es la siguiente:
import _mysql
conn = _mysql.connect(user = 'root', passwd = 'root', db = 'servicios', host = 'localhost',port
=3307)
Modulo MySQLdb
MySQLdb es un módulo Python que importa y ejecuta la interfaz _mysql haciendolo
compatible con la interfaz API de Python DB (versión 2).
Funciones MySQLdb
connect (parámetros. ..)
Constructor para la creación de una conexión con la base de datos. Devuelve un
objeto Connection. Los parámetros son los mismos que para la API de C de
MySQL. Además, hay algunas palabras clave adicionales que corresponden a lo
que se puede pasar mysql_options () antes de conectar. Tenga en cuenta que
algunos de los parámetros deben ser especificados como argumentos clave! El
valor predeterminado de cada parámetro es NULL o cero, según el caso. Los
parámetros más importantes son:
host=
nombre de host para conectarse a. Por defecto: utilizar el localhost a través de un
socket windows (en su caso)
user=
usuario para autenticarse como. Por defecto: corriente de usuario efectivo.
passwd=
contraseña para autenticarse con. Por defecto: sin contraseña.
db=
base de datos a utilizar. Por defecto: no base de datos predeterminada.
port=
Puerto TCP del servidor MySQL. Por defecto: puerto estándar (3306).
conv=
tipo de diccionario de conversión. Por defecto: una copia
de MySQLdb.converters.conversions
connect_timeout=
Abortar si conexión no se completa en un número dado de segundos. Por defecto:
(?) Sin tiempo de espera
named_pipe=
Utilice una tubería con nombre (Windows). Por defecto: no.
init_command=
Comando inicial para emitir al servidor al conectarse. Por defecto: Nada.
read_default_file=
Archivo de configuración de MySQL para leer; consulte la documentación de
MySQL para mysql_options ().
read_default_group=
Grupo predeterminado para leer; consulte la documentación de MySQL
para mysql_options ().
cursorclass=
clase cursor ese cursor () usa, a menos que se invalida. Por
defecto:. MySQLdb.cursors.Cursor Este debe ser un parámetro de palabra clave.
use_unicode=
Si es True, CHAR y VARCHAR y TEXT columnas se devuelven como cadenas
Unicode, utilizando el juego de caracteres configurada. Lo mejor es establecer la
codificación predeterminada en la configuración del servidor, o la configuración del
cliente (léase con read_default_file). Si cambia el conjunto de caracteres después
de conectar (MySQL-4.1 y posteriores), tendrás que poner el nombre de juego de
caracteres correcto en connection.charset.
Si es falso, las columnas de texto-como se devuelven como cadenas normales,
pero siempre se puede escribir cadenas Unicode.
Este debe ser un parámetro de palabra clave.
charset=
Si está presente, el conjunto de caracteres de conexión cambiará a este juego de
caracteres, si no son iguales. Apoyo a cambiar el juego de caracteres requiere
MySQL-4.1 y el servidor más adelante; si el servidor es demasiado viejo, se
genera la excepción UnsupportedError. Esta opción implica use_unicode = True,
pero se puede sustituir esto con use_unicode = False, aunque probablemente no
debería.
Si no está presente, se utiliza el conjunto de caracteres por defecto.
Este debe ser un parámetro de palabra clave.
sql_mode
Si está presente, el modo SQL sesión se establece en la cadena dada. Si no está
presente, el modo SQL sesión será sin cambios.
Atributos MySQLdb
apilevel
Constante de cadena que indica el nivel de la API DB compatible. '2 .0'
threadsafety
Constante entera que indica el nivel de seguridad de los hilos de la interfaz
admite. Esto se establece en 1, lo que significa: Las roscas se pueden compartir el
módulo.
El protocolo de MySQL no puede controlar varios subprocesos utilizando la misma
conexión a la vez. . Algunas versiones anteriores de MySQLdb utilizado bloqueo
para lograr un threadsafety de 2 Si bien esto no es muy difícil de lograr mediante la
clase Cursor estándar (que mysql_store_result utiliza ()), se complica por
SSCursor (que utiliza mysql_use_result (), con la última debe asegurarse de que
todas las filas han sido leídos antes de otra consulta se puede ejecutar. Esto se
complica aún más por la suma de las operaciones, ya que las transacciones se
inician cuando un cursor ejecutar una consulta, pero terminan
cuando COMMIT o ROLLBACK es ejecutado por el objeto Connection. Dos temas
simplemente no pueden compartir una conexión, mientras que una transacción en
curso, además de no poder compartirla durante su ejecución. Esto excesivamente
complicado el código hasta el punto en que simplemente no vale la pena.
charset
El juego de caracteres utilizado por la conexión. En MySQL 4.1 y siguientes, es
posible (aunque no se recomienda) para cambiar el conjunto de caracteres de la
conexión con una sentencia SQL. Si usted hace esto, usted también tendrá que
cambiar este atributo. De lo contrario, tendrás que codificar errores.
paramstyle
Constante de cadena que indica el tipo de formato de marcador de parámetro
esperado por la interfaz. Se establece en 'formato' = ANSI códigos de formato
printf de C, por ejemplo, "... WHERE name =% s '. Si un objeto de asignación se
utiliza para conn.Execute (), a continuación, la interfaz utiliza realmente = Python
códigos "pyformat 'en formato extendido, por ejemplo," ... WHERE name =%
(name) s'. Sin embargo, la API actualmente no permite la especificación de más de
un estilo en paramstyle.
Tenga en cuenta que cualquier signos de porcentaje literales en la cadena de
consulta se pasa a ejecutar () deben escaparse, es decir,%%.
Marcadores de posición de parámetros sólo se pueden utilizar para insertar
valores de columna. No pueden ser utilizados para otras partes de SQL, tales
como nombres de tablas, declaraciones, etc
conv
Un diccionario o mapeo que controla cómo los tipos se convierten de MySQL para
Python y viceversa.
Si la clave es un tipo MySQL (. Desde field_type *), entonces el valor puede ser:
 un objeto invocable que toma un argumento de cadena (el valor de
MySQL), 'que devuelve un valor de Python
 una secuencia de 2-tuplas, donde el primer valor es una combinación de
banderas de MySQLdb.constants.FLAG, y el segundo valor es una función
que el anterior. La secuencia se prueba hasta que las banderas en el
campo coinciden con los del primer valor. Si ambos valores son Ninguna,
entonces la conversión por defecto se hace. En la actualidad esto sólo se
utiliza para distinquish columnas TEXT y BLOB.
Si la clave es un tipo de Python o clase, a continuación, el valor es un objeto de
Python que se puede llamar (por lo general de una función) tomar dos argumentos
(valor a convertir, y el Diccionario de conversión), que convierte los valores de este
tipo a un valor de cadena literal de SQL.
Esto se inicializa con los valores predeterminados razonables para la mayoría de
los tipos. Al crear un objeto Connection, puede pasar su propio diccionario
convertidor de tipos como un parámetro de palabra clave.De lo contrario, utiliza
una copia de MySQLdb.converters.conversions. Varios tipos no estándar se
devuelven como cadenas, que es como MySQL devuelve todas las
columnas. Para más detalles, consulte la documentación incorporada en el
módulo.
Objeto de conexión
Los Objetos de conexión son devueltos por la función connect ().
commit ()
Si la base de datos y las tablas admiten actualización/transacción (adición, edición
y borrado), retorna True si hay éxito en operación; de lo contrario, retorna False
(Fracaso).
rollback ()
Si la base de datos y las tablas admiten actualización/transacción (adición, edición
y borrado), se anulan las actualizaciones/transacciones en curso (devuelve a la
base de datos al estado previo antes de la última llamada a la sentencia
commit); de lo contrario genera una excepción NotSupportedError .
cursor ([cursorclass])
MySQL no soporta cursores, sin embargo, los cursores se pueden emular
mediante una clase cursor.
close ()
Cierra la conexión de base de datos.
Objeto Cursor
Cursor es una instancia mediante la cual puede invocar métodos que ejecutan
declaraciones SQL para obtener datos de los conjuntos a partir de los resultados de las
consulta
CallProc (procname, args)
Llama procname (procedimiento almacenado) con la secuencia de los argumentos
en args.
close ()
Cierra el cursor. Sino está abierto genera una excepción ProgrammingError. Si
está utilizando los cursores del lado del servidor, es muy importante para cerrar el
cursor cuando haya terminado con él y antes de crear uno nuevo.
execute (sentencia sql [parámetros])
Ejecuta una sentencia Sql.
executemany (sentencias sql [parámetros])
Ejecuta múltiples sentencias sql.
fetchone ()
Obtiene la siguiente fila de un conjunto de resultados de consulta, devolviendo una
sola secuencia, o ninguno, cuando no hay más datos disponibles.
fetchmany ([size = cursor.arraysize])
Obtiene la siguiente serie de filas de un resultado de consulta, devolviendo una
lista. Una lista vacía se devuelve cuando no hay más filas disponibles.
El número de filas hay que seleccionar por llamada se especifica mediante el
parámetro de tamaño. Si no se le da, arraysize del cursor determina el número de
filas a captar. El método debe tratar de recoger tantas filas como indica el
parámetro de tamaño. Si esto no es posible debido al número especificado de filas
que no están disponibles, menos filas pueden ser devueltos.
Tenga en cuenta que hay consideraciones de rendimiento que participan en el
parámetro de tamaño. Para un rendimiento óptimo, es mejor usar el atributo
arraysize. Si se utiliza el parámetro de tamaño, entonces lo mejor es para que
conserve el mismo valor de uno () fetchmany llamada y la siguiente.
fetchall ()
Obtiene todas las filas de un resultado de consulta (select), devolviendo una lista.
Tenga en cuenta que atributo arraysize del cursor puede afectar al rendimiento de
esta operación. Una lista vacía se devuelve cuando no hay filas que cumpla con el
select.
info ()
Devuelve información acerca de la última consulta.
lastrowid()
Este atributo de sólo lectura proporciona el identificador la última fila adicionada.
Sólo se establece si ha emitido una sentencia INSERT con el método execute ().
nextset ()
Desplaza el cursor a la siguiente fila del objeto resultset (objeto resultado
de un select)
rowcount()
Si bien el Cursor de clase del módulo sqlite3 implementa este atributo, el propio
soporte del motor de base de datos para la determinación de las "filas afectadas" /
"filas seleccionadas" es similar a len(fetchall) en el caso de un select.
PARTE 7. PRACTICA MySQL CON PYTHON
PRIMER MOMENTO. APERTURA EDITOR PYTHON

SEGUNDO MOMENTO. ACTIVAR WAMPSERVER


TERCER MOMENTO. ACTIVAR PhpMyAdmin
User: root
Password:
Iniciar sesion

CUARTO MOMENTO. EDICION PROGRAMA PYTHON BaseEncuesta


Seleccionar las lineas a continuacion:
import mysql.connector

conexiónBD = mysql.connector.connect(user = 'root', host = 'localhost', port = '3306')

cursorBD = conexiónBD.cursor()

conexiónBD = mysql.connector.connect(db = 'encuesta', user = 'root', host = 'localhost',


port = '3306')

cursorObjetoBD=conexiónBD.cursor()

def consultatablaquery(query=''):

global conexiónBD

global cursorObjetoBD

cursor = conexiónBD.cursor() # Crear un cursor

cursor.execute(query) # Ejecutar una consulta

data=cursor.fetchall()

cursor.close() # Cerrar el cursor

return data

def obtenerllavequery(query=''):

global conexiónBD

global cursorObjetoBD

cursor = conexiónBD.cursor() # Crear un cursor

cursor.execute(query) # Ejecutar una consulta

data=cursor.fetchall()

vector =[item[0] for item in data]

cursor.close() # Cerrar el cursor

return vector
def adicion_encuesta(tabla,campo1,campo2,campo3,campo4,campo5,campo6,campo7):#
Adicion

query = "INSERT INTO %s VALUES ('%s','%s','%s','%s','%s','%s','%s');" %


(tabla,campo1,campo2,campo3,campo4,campo5,campo6,campo7)

result=consultatablaquery(query)

print (result)

def consultatabla(tabla): # Consultar todos los registros de una tabla

query = "SELECT * FROM %s;" % tabla

result=consultatablaquery(query)

print (result)

def consultallave(tabla): # Consultar el registro por llave primaria

campo1 = input('Cedula:')

query = "SELECT * FROM %s where %s='%s';" % (tabla,'cedula',campo1)

lista=consultatablaquery(query)

if lista==-1:

print ("error en consulta")

else:

if len(lista)>0:

print ("Numero de cedula existe")

else:

campo2 = input(f"Nombre[{campo1}]:")

campo3 = input(f"Ciudad[{campo1}]:")

campo4 = input(f"Domicilio[{campo1}]: ")

campo5 = input(f"Telefono[{campo1}]:")
print("Id Servicios en la BD: ",contratos)

campo6=1;

cantidad=0;

while cantidad==0:

try:

campo6 = int(input(f"Id Servicios[{campo1}]:"))

cantidad = servicios.count(campo6)

print(cantidad);

except:

print(cantidad);

cantidad=0;

print("Id Contratos en la BD: ",contratos)

campo7= 1;

cantidad=0;

while cantidad==0:

try:

campo7 = int(input(f"Id Contratos[{campo1}]:"))

cantidad = contratos.count(campo7)

except:

cantidad=0;

adicion_encuesta(tabla,campo1,campo2,campo3,campo4,campo5,campo6,campo7)

def borrado(tabla): # Borrar un registro

valor = input('Cedula:')

query = "DELETE FROM %s where %s='%s';" % (tabla,'cedula',valor)


result=consultatablaquery(query)

print (result)

def edicion(tabla): # Edita un registro

query = "UPDATE %s set %s='%s' where %s='%s';" %


(tabla,campoedicion,nuevovalor,campocondicion,condicion)

result=consultatablaquery(query)

print (result)

def edicion(tabla): # Edita un registro

valorllave = input('Cedula:')

query = "SELECT * FROM %s where %s='%s';" % (tabla,'cedula',valorllave)

lista=consultatablaquery(query)

if lista==-1:

print ("error en consulta")

else:

if len(lista)>0:

valorciudad = input('Ciudad Nuevo Domicilio:')

query = "UPDATE %s set %s='%s' where %s='%s';" %


(tabla,'ciudad',valorciudad,'cedula',valorllave)

result=consultatablaquery(query)

print (result)

else:

print ("Numero de cedula no existe")

if __name__=="__main__":

opcion=0

servicios=obtenerllavequery("SELECT idservicio FROM servicios;")


contratos=obtenerllavequery("SELECT idcontrato FROM contratos;")

while(opcion!=5):

opcion=0

while(opcion<1 or opcion>5):

print("1. Adicion Encuesta ")

print("2. Borrar Encuesta")

print("3. Editar Encuesta")

print("4. Consultar Encuesta")

print("5. Salir ")

opcion = int(input('Opcion[1...4]: '))

if(opcion==1):

consultallave('encuesta')

elif(opcion==2):

borrado('encuesta')

elif(opcion==3):

edicion('encuesta')

elif(opcion==4):

consultatabla('encuesta')
Consultar en PhpMyAdmin

Cerrar Aplicaciones

También podría gustarte