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

Programación de Bases de Datos en Python

El documento proporciona una introducción a la programación de bases de datos en Python, destacando su compatibilidad con diversas bases de datos y el uso de la API DB-API para la interacción con estas. Se explican los comandos SQL básicos y los beneficios de usar Python para la programación de bases de datos, como su eficiencia y portabilidad. Además, se describen los objetos de conexión y cursor, así como las excepciones relacionadas con la base de datos en el contexto de la API DB-API.

Traducido por

ScribdTranslations
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
0% encontró este documento útil (0 votos)
3 vistas36 páginas

Programación de Bases de Datos en Python

El documento proporciona una introducción a la programación de bases de datos en Python, destacando su compatibilidad con diversas bases de datos y el uso de la API DB-API para la interacción con estas. Se explican los comandos SQL básicos y los beneficios de usar Python para la programación de bases de datos, como su eficiencia y portabilidad. Además, se describen los objetos de conexión y cursor, así como las excepciones relacionadas con la base de datos en el contexto de la API DB-API.

Traducido por

ScribdTranslations
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

Programación en Python

[Link]. IV Año I Sem

COLEGIO DE INGENIERÍA MALLAREDDY PARA MUJERES


(Institución Autónoma-UGC, Gobierno de India)

PROGRAMACIÓN EN PYTHON
Course Code: CS721PE

C. RAJEEV
Prof. Asistente
CSE,
MRECW.
UNIDAD-5
UNIDAD – V
Programación de Bases de Datos: Introducción, Base de Datos en Python

Interfaz de Programador de Aplicaciones (DB-API), Objeto


Gerentes Relacionales (ORMs), Módulos Relacionados
Programación de Bases de Datos: Introducción

El lenguaje de programación Python tiene características poderosas paraprogramación de bases de datos

Python soporta varias bases de datos como MySQL, Oracle, Sybase, PostgreSQL, etc.
Python también soporta el Lenguaje de Definición de Datos (DDL), Lenguaje de Manipulación de Datos

(DML) y declaraciones de consulta de datos.

Para la programación de bases de datos, la API DB de Python es un módulo ampliamente utilizado que proporciona un

interfaz de programación de aplicaciones de base de datos.

El estándar de Python para interfaces de bases de datos es el Python DB-API.

Puedes elegir la base de datos adecuada para tu aplicación.


La API de base de datos de Python admite una amplia gama de servidores de bases de datos, como -

GadFly Informix
mSQL Interbase
MySQL Oráculo
PostgreSQL Sybase
Microsoft SQL Server 2000
Base de datos de Python.
Los datos se recuperan de un sistema de base de datos utilizando el lenguaje SQL.

Los datos están en todas partes y las aplicaciones de software los utilizan. Los datos están en la memoria, en archivos o

bases de datos.

Python tiene bindings para muchos sistemas de bases de datos, incluyendo MySQL, Postregsql, Oracle,

Microsoft SQL Server y Maria DB.


Uno de estos sistemas de gestión de bases de datos (DBMS) se llama SQLite.

SQLite fue creado en el año 2000 y es uno de los muchos sistemas de gestión en el
base de datos zoológico.
SQL:
SQL es un lenguaje de programación de propósito especial diseñado para gestionar datos almacenados en

una base de datos.

Los comandos y consultas de la base de datos se dan a una base de datos mediante SQL.

La mayoría de las bases de datos están configuradas para ser insensibles a mayúsculas y minúsculas, especialmente los comandos de bases de datos.

El estilo aceptado es usar MAYÚSCULAS para las palabras clave de la base de datos.

La mayoría de los programas de línea de comandos requieren un punto y coma ( ; ) al final para terminar una SQL

declaración.
Aquí hay algunos ejemplos de comandos SQL.
1. Creando una base de datos

CREAR BASE DE DATOS test;


OTORGAR TODO EN test.* a usuario(s);
La primera línea crea una base de datos llamada "test," y

Suponiendo que eres un administrador de bases de datos, esta segunda línea se puede utilizar para

otorgar permisos a usuarios específicos (o a todos ellos) para que puedan realizar el
operaciones de base de datos
2. Usando una base de datos

USE prueba;
If you logged into a database systemwithout choosingwhich database you want to use, this
una declaración simple te permite especificar una con la que realizar operaciones en la base de datos.

[Link] una base de datos

ELIMINAR BASE DE DATOS test;

Esta declaración simple elimina todas las tablas y datos de la base de datos y los borra de
el sistema.
[Link] a Table
CREAR TABLA usuarios (login VARCHAR(8), uid INT, prid INT);
Esta declaración crea una nueva tabla con una columna de cadena login y un par de campos enteros uid

yprid.
5. Eliminando una tabla
ELIMINAR TABLA usuarios;

Esta simple declaración elimina una tabla de base de datos junto con todos sus datos.
6. Insertar una fila
INSERTAR EN usuarios VALORES('leanna', 311, 1);

Puedes insertar una nueva fila en una base de datos con la declaración INSERT. Especifica la tabla.

y los valores que van en cada campo. Para nuestro ejemplo, la cadena 'leanna' va en el
campo de inicio de sesión, y 311 y 1 a uid y prid, respectivamente.

7. Actualizando una fila

ACTUALIZAR usuarios ESTABLECER prid=4 DONDE prid=2;

ACTUALIZAR usuarios ESTABLECER prid=1 DONDE uid=311;

Para cambiar filas existentes de la tabla, utilizas la instrucción UPDATE. Usa SET para el

columnas que están cambiando y proporcionar cualquier criterio para determinar qué filas deben

cambiar
En el primer ejemplo, todos los usuarios con un 'ID de proyecto' o prid de 2 serán movidos al proyecto.

#4. En el segundo ejemplo, tomamos un usuario (con un UID de 311) y lo movemos a


proyecto #1.
8. Eliminando una fila

ELIMINAR DE usuarios DONDE prid=%d;


ELIMINAR DE usuarios;
Para eliminar una fila de una tabla, usa el comando DELETE FROM, da la tabla que deseas eliminar

filas de, y cualquier criterio opcional. Sin él, como en el segundo ejemplo, todas las filas serán
eliminado.
Beneficios de Python para la programación de bases de datos

Programar en Python es indudablemente más eficiente y rápido en comparación con otros

idiomas.
Python es famoso por su portabilidad.
Es independiente de la plataforma.

Python soporta cursores SQL.


En muchos lenguajes de programación, el desarrollador de aplicaciones necesita encargarse de la

conexiones abiertas y cerradas de la base de datos, para evitar más excepciones y errores. En
Python, estas conexiones están a cargo de Python soporta bases de datos relacionales
sistemas.
Las APIs de bases de datos de Python son compatibles con varias bases de datos, por lo que es muy fácil

migrate and portdatabase application interfaces.


Debemos descargar un módulo API separateDB para cada base de datos a la que necesitamos acceder.

Por ejemplo, si necesitas acceder a una base de datos Oracle así como a una base de datos MySQL,

debes descargar tanto los módulos de base de datos de Oracle como de MySQL.

La API DB proporciona un estándar mínimo para trabajar con bases de datos usando Python

estructuras y sintaxis siempre que sea posible.

Esta API incluye lo siguiente −


[Link] el módulo de API.
[Link] una conexión con la base de datos.
3. Emisión de declaraciones SQL y procedimientos almacenados.

4. Cerrando la conexión
Bases de datos y Python:
Podemos acceder a bases de datos relacionales desde Python, ya sea directamente a través de una base de datos

interfaz, o a través de un ORM.

La forma de acceder a una base de datos desde Python es a través de un adaptador.

Un adaptador es básicamente un módulo de Python que te permite conectarte a una base de datos relacional.

biblioteca de cliente de la base de datos, generalmente en C.

Se recomienda que todos los adaptadores de Python se adapten a la aplicación del DB-SIG de Python.

Interfaz de Programador (API).


La figura representa 'Comunicación en múltiples niveles entre la aplicación y la base de datos.'

La figura ilustra las capas involucradas en la escritura de una aplicación de base de datos en Python, con

y sin un ORM.

elDB-API es tu interfaz a las bibliotecas C del cliente de base de datos.


La primera caja es generalmente un programa C/C++ mientras que los adaptadores compatibles con DB-API permiten que

aplicaciones de programa en Python.

Los ORM pueden simplificar una aplicación al manejar todos los detalles específicos de la base de datos.
Interfaz de Programador de Aplicaciones de Base de Datos de Python (DB-API):

¿Qué es la API de DB?


TheAPIes una especificación que establece un conjunto de objetos requeridos y acceso a la base de datos.

mecanismos para proporcionar acceso consistente a través de los diversos adaptadores de base de datos y

sistemas de bases de datos subyacentes.

La DB-API es una especificación para una interfaz común a bases de datos relacionales.
En los "viejos tiempos", teníamos un escenario de muchas bases de datos y mucha gente.

implementando sus propios adaptadores de base de datos. Era una rueda que se estaba reinventando

una y otra vez. Estas bases de datos y adaptadores fueron implementados en diferentes momentos
por diferentes personas sin ninguna coherencia en la funcionalidad.

Se formó un grupo de interés especial (SIG) para la conectividad de bases de datos de Python, y

eventualmente, nació una API ... laDB-API versión 1.0.


La API proporciona una interfaz consistente para una variedad de bases de datos relacionales, y
migrar código entre diferentes bases de datos es mucho más simple, generalmente solo requiere

tweaking several lines of code. The current version of the specification isversion 2.0.
Atributos del Módulo
Un módulo compatible con DBAPI debe definir los atributos globales.

I. Atributos del Módulo DB-API:


I. Atributos de Datos:
Atributo Descripción
[Link]----------------------Version of DB-API module is compliant with
2. Seguridad en hilos---------------Nivel de seguridad en hilos de este módulo
[Link]-----------------SQL statement parameter style of this module
[Link]()------------------Función Conectar()
[Link]:
Constante de cadena que indica el nivel de API de base de datos admitido.

Actualmente solo se permiten las cadenas "1.0" y "2.0".


Si no se proporciona, se deberá asumir una interfaz de nivel aDB-API 1.0.
2. threadsafety:
Este es un entero con estos valores posibles:
0: No es seguro para hilos, por lo que los hilos no deben compartir el módulo en absoluto.

1: Mínimamente seguro para hilos: los hilos pueden compartir el módulo pero no las conexiones.

2: Moderadamente seguro para hilos: los hilos pueden compartir el módulo y las conexiones, pero no

cursoras.
3: Totalmente seguro para subprocesos: los subprocesos pueden compartir el módulo, conexiones y cursores.
[Link]
La API admite una variedad de formas de indicar cómo se deben integrar los parámetros.
en una instrucción SQL que finalmente se envía al servidor para su ejecución.

Este argumento es solo una cadena que especifica la forma de sustitución de cadenas que utilizarás.

utilizar al construir filas para una consulta o comando.


II. Atributo(s) de función:
[Link]()
La función connect() proporciona acceso a la base de datos a través de Connection
objetos.
Un módulo compatible debe implementar una función connect(), que crea y devuelve
un objeto de Conexión.
Atributos de la función connect()
Parameter Description
usuario Nombre de usuario
contraseña Contraseña
Anfitrión Nombre del host
base de datos Nombre de la base de datos

dsn Nombre de la fuente de datos

Podemos pasar la información de conexión a la base de datos como una cadena con múltiples parámetros (DSN)

o parámetros individuales pasados como argumentos posicionales o, más probablemente, argumentos nombrados.

Aquí hay un ejemplo de usar connect() de PEP 249 (Propuesta de Mejora de Python):
connect(dsn='myhost:MYDB',user='guido',password='234$')
El uso de DSN frente a parámetros individuales se basa principalmente en el sistema que estás utilizando.

conectando a.

Por ejemplo, si estás utilizando una API como ODBC o JDBC, probablemente estés utilizando un DSN.
mientras que si estás trabajando directamente con una base de datos, entonces es más probable que emitas por separado

parámetros de inicio de sesión.

Otra razón para esto es que la mayoría de los adaptadores de bases de datos no han implementado soporte para

DSN.
A continuación se presentan algunos ejemplos de llamadas connect() que no son DSN. Tenga en cuenta que no todos los adaptadores tienen

implemented the specification exactly,

por ejemplo, MySQLdb usa db en lugar de base de datos.

["[Link](host='dbserv', db='inv', user='smith')","[Link](database='sales')"]


[Link](database='template1', user='pgsql') • [Link]('csrDB',
/usr/local/database') • [Link]('marketing/test'
III. Excepciones
El módulo debería hacer que toda la información de errores esté disponible a través de estas excepciones o

subclases.
Jerarquía de clases de excepciones de DB-API
1. Advertencia:

Se genera una excepción para advertencias importantes como la truncación de datos al insertar, etc.

2. Error:
Excepción que es la clase base de todas las demás excepciones de error. Podemos usar esto para

catch all errorswith one single except statement


3. InterfaceError:
Excepción generada por errores relacionados con la interfaz de la base de datos en lugar de la
base de datos en sí.

4. DatabaseError:
Excepción levantada por errores relacionados con la base de datos

5. Error de datos:

Excepción generada por errores que se deben a problemas con los datos procesados como
división por cero, valor numérico fuera de rango, etc.
6. ErrorOperacional: Error durante la ejecución de la operación de la base de datos

7. IntegrityError: Error de integridad relacional en la base de datos

8. ErrorInterno: Error que ocurre dentro de la base de datos

9. Error de programación: El comando SQL falló

10. NotSupportedError: Ocurrió una operación no soportada


IV. Objetos de Conexión
Las conexiones son cómo su aplicación se comunica con la base de datos. Representan los
mecanismo de comunicación fundamental mediante el cual se envían comandos al servidor y
resultados devueltos.

Una vez que se ha establecido una conexión (o un conjunto de conexiones), creas cursores para
enviar solicitudes y recibir respuestas de la base de datos.
Métodos del objeto de conexión:
Nombre del método Description
cerrar() Cerrar conexión a la base de datos

confirmar() Confirmar la transacción actual

revertir() Cancelar la transacción actual


cursor() Crea (y devuelve) un cursor o un objeto similar a un cursor

usando esta conexión


manejadorDeErrores(cxn, cur, errcls, errval) Sirve como un controlador para la conexión dada

cursor
V. Objetos Cursor:
Una vez que tengas una conexión, puedes comenzar a hablar con la base de datos.

El cursor permite a un usuario emitir comandos de base de datos y recuperar filas resultantes de consultas.

Un objeto cursor de la API de base de datos de Python funciona como un cursor para ti, incluso si los cursores no lo son.

admitido en la base de datos. En este caso, el creador del adaptador de la base de datos debe implementar

Los objetos CURSOR para que actúen como cursores.

Esto mantiene tu código de Python consistente cuando cambias entre sistemas de bases de datos que

tienen o no tienen soporte para cursor.

Una vez que hayas creado un cursor, puedes ejecutar una consulta o comando (o múltiples consultas

y comandos) y recuperar una o más filas del conjunto de resultados.


En python, los objetos cursor tienen atributos y métodos de datos.
Atributos del objeto Cursor:
Atributo de objeto Descripción
Conexión Conexión que creó este cursor (opcional)

description Devuelve la actividad del cursor (tuplas de 7 elementos): (nombre, código_tipo,

tamaño_mostrado, tamaño_interno, precisión, escala, null_ok;

últimoid ID de fila de la última fila modificada (opcional; si los ID de fila no)

soportado, predeterminado en None)

conteo de filas Número de filas que la última ejecución*() produjo o afectó


llamarproc(func[, args]) Llamar a un procedimiento almacenado

tamaño de arreglo Número de filas para recuperar a la vez con fetch many();
por defecto es 1

cerrar() Cerrar cursor

ejecutar(op[, args]) Ejecutar una consulta o comando de base de datos

messages Lista de mensajes (conjunto de tuplas) recibidos de la base de datos


para la ejecución del cursor (opcional)

setinput-sizes(sizes) Establecer el tamaño de entrada máximo permitido


VI. Tipos de Objetos y Constructores
Hay una delgada línea entre los objetos de Python y los objetos nativos de la base de datos.

Como programador que escribe para la DB-API de Python, los parámetros que envías a una base de datos

se dan como cadenas, pero la base de datos puede necesitar convertirlas a una variedad de diferentes,
tipos de datos compatibles que son correctos para cualquier consulta particular.

Por ejemplo, ¿debería la cadena de Python convertirse en un VARCHAR, un TEXT, un


BLOB, o un objeto BINARY en bruto, o quizás un objeto DATE o TIME si es eso lo que
¿cómo se supone que debe ser la cadena?

Se debe tener cuidado al proporcionar la entrada a la base de datos de la manera esperada.

DB-API es crear constructores que construyan objetos especiales que puedan ser fácilmente convertidos

a los objetos de base de datos apropiados.


Objetos de Tipo y Constructores:
Cambios en la API entre versiones
Se realizaron varios cambios importantes cuando se revisó la API DB de la versión 1.0
(1996) a 2.0 (1999):
● Módulo dbi requerido eliminado de la API
Los objetos de tipo fueron actualizados

● Nuevos atributos añadidos para proporcionar mejores vínculos de base de datos

● callproc() semantics and return value of execute() redefined


Conversión a excepciones basadas en clases
Próxima versión de la DB-API, tentativamente llamada DB-API 3.0. Estas incluyen lo siguiente:
● Mejor valor de retorno para nextset() cuando hay un nuevo conjunto de resultados

● Cambiar de float a Decimal


● Mejora de la flexibilidad y el soporte para estilos de parámetros
● Declaraciones preparadas o almacenamiento en caché de declaraciones

● Refinar el modelo de transacción


● Indique el papel de la API con respecto a la portabilidad
● Agregar pruebas unitarias
Bases de datos y Python: Adaptadores
Para cada una de las bases de datos soportadas, existe uno o más adaptadores que permiten
te conectas al sistema de base de datos objetivo desde Python.

Algunas bases de datos, como Sybase, SAP, Oracle y SQLServer, tienen más de uno
adaptador disponible.
Lo mejor que puedes hacer es averiguar cuáles se adaptan mejor a tus necesidades.

•Your questions for each candidate may include:


•qué tan bueno es su rendimiento,
• ¿Qué tan útil es su documentación y/o sitio web?
•si tiene una comunidad activa o no,
•cuál es la calidad general y la estabilidad del controlador, etc.
Ex:
Para MySQL, solo hay un adaptador de Python, es decir, MySQLdb

Para PostgreSQL, hay tres adaptadores de Python disponibles, es decir, psycopg, PyPgSQL y PyGreSQL.

Para SQLite ---solo un adaptador de Python es decir, sqlite3


Gestores de Objetos-Relacionales (ORMs):
Un mapeador objeto-relacional mapea un sistema de base de datos relacional a objetos

Un mapeador objeto-relacional (ORM) es una biblioteca de código que automatiza la transferencia de

datos almacenados en tablas de bases de datos relacionales en objetos que son más comúnmente utilizados

en el código de la aplicación.

El ORM es independiente de qué sistema de base de datos relacional se utilice. Desde dentro

Python, puedes hablar con objetos y el ORM lo mapeará a la base de datos.


Objeto: Esta parte representa los objetos y el lenguaje de programación donde se encuentra el marco.

usado, por ejemplo, Python.

Relacional– Esta parte representa la base de datos RDBMS que estás utilizando como –MySQL, Oracle

Base de datos, PostgreSQL, MariaDB, PerconaDB, TokuDB.

Mapeo - Esta parte final representa el puente y la conexión entre los dos anteriores
partes, los objetos y las tablas de la base de datos.
Los ORM proporcionan una abstracción de alto nivel sobre una base de datos relacional que permite a un desarrollador

escribe código Python en lugar de SQL para crear, leer, actualizar y eliminar datos y esquemas

su base de datos.

Los desarrolladores pueden usar el lenguaje de programación con el que se sientan cómodos para trabajar con un

base de datos en lugar de escribir declaraciones SQL o procedimientos almacenados.

Por ejemplo, sin un ORM, un desarrollador escribiría la siguiente declaración SQL para
recupera cada fila en la tabla USERS donde la columna zip_code es 94107:
SELECCIONAR * DE USUARIOS DONDE código_postal=94107;

La consulta equivalente de Django ORM se vería en su lugar como el siguiente código en Python:

# obtener a todos en el código postal 94107 y asignar a la variable usuarios


usuarios = [Link](código_postal=94107)

La capacidad de escribir código Python en lugar de SQL puede acelerar el desarrollo de aplicaciones web,

especialmente al principio de un proyecto.


Clase de Python == Tabla SQL
Instancia de la Clase == Fila en la Tabla
Los ORM de Python más conocidos hoy en día son:

1. SQLAlchemy
2. Peewee
3. El ORM de Django
4. PonyORM
5. SQLObject
6. Tortoise ORM

SQLAlchemy es una biblioteca que facilita la comunicación entre programas de Python y


bases de datos.

La mayor parte de las veces, esta biblioteca se utiliza como una herramienta de Mapeo de Objetos Relacionales (ORM) que

convierte clases de Python a tablas en bases de datos relacionales y convierte automáticamente funciones

calls to SQL statements.

SQLAlchemy proporciona una interfaz estándar que permite a los desarrolladores crear aplicaciones independientes de la base de datos.

code to communicate with a wide variety of database engines.


ORM con SqlAlchemy: ([Link]

También podría gustarte