SQLAlquimia
El kit de herramientas Python SQL y el mapeador relacional de objetos
Introducción
SQLAlchemy es el kit de herramientas Python SQL y el mapeador relacional de objetos que brinda a los desarrolladores de aplicaciones todo el poder y la flexibilidad de SQL. SQLAlchemy proporciona un conjunto completo de conocidos patrones de persistencia a nivel empresarial, diseñados para un acceso eficiente y de alto rendimiento a bases de datos, adaptados a un lenguaje de dominio simple y pitónico.
Las principales características de SQLAlchemy incluyen:
- Un ORM de potencia industrial, construido desde el núcleo del mapa de identidad, la unidad de trabajo y los patrones del mapeador de datos. Estos patrones permiten una persistencia transparente de objetos utilizando un sistema de configuración declarativo. Los modelos de dominio se pueden construir y manipular de forma natural, y los cambios se sincronizan automáticamente con la transacción actual.
- Un sistema de consultas orientado relacionalmente, que expone explícitamente toda la gama de capacidades de SQL, incluidas uniones, subconsultas, correlación y casi todo lo demás, en términos del modelo de objetos. Al escribir consultas con ORM se utilizan las mismas técnicas de composición relacional que se utilizan al escribir SQL. Si bien puede acceder a SQL literal en cualquier momento, prácticamente nunca es necesario.
- Un sistema completo y flexible de carga inmediata de colecciones y objetos relacionados. Las colecciones se almacenan en caché dentro de una sesión y se pueden cargar en acceso individual, todas a la vez mediante uniones o mediante consulta por colección en todo el conjunto de resultados.
- Un sistema de construcción Core SQL y una capa de interacción DBAPI. SQLAlchemy Core está separado del ORM y es una capa de abstracción de base de datos completa por derecho propio, e incluye un lenguaje de expresión SQL extensible basado en Python, metadatos de esquema, agrupación de conexiones, coerción de tipos y tipos personalizados.
- Se supone que todas las restricciones de clave primaria y externa son compuestas y naturales. Las claves primarias enteras sustitutas siguen siendo, por supuesto, la norma, pero SQLAlchemy nunca asume ni codifica este modelo.
- Introspección y generación de bases de datos. Los esquemas de bases de datos se pueden "reflejar" en un solo paso en estructuras de Python que representan metadatos de bases de datos; esas mismas estructuras pueden luego generar declaraciones CREATE nuevamente, todo dentro del Núcleo, independientemente del ORM.
La filosofía de SQLAlchemy:
- Las bases de datos SQL se comportan cada vez menos como colecciones de objetos a medida que el tamaño y el rendimiento empiezan a importar; Las colecciones de objetos se comportan cada vez menos como tablas y filas a medida que la abstracción empieza a importar. SQLAlchemy tiene como objetivo adaptarse a ambos principios.
- Un ORM no necesita ocultar la "R". Una base de datos relacional proporciona una funcionalidad rica basada en conjuntos que debería estar completamente expuesta. El ORM de SQLAlchemy proporciona un conjunto abierto de patrones que permiten a un desarrollador construir una capa de mediación personalizada entre un modelo de dominio y un esquema relacional, convirtiendo el problema de la llamada "impedancia relacional de objetos" en un recuerdo lejano.
- El desarrollador, en todos los casos, toma todas las decisiones relativas al diseño, la estructura y las convenciones de nomenclatura tanto del modelo de objetos como del esquema relacional. SQLAlchemy sólo proporciona los medios para automatizar la ejecución de estas decisiones.
- Con SQLAlchemy, no existe tal cosa como "el ORM generó una consulta incorrecta": usted conserva el control total sobre la estructura de las consultas, incluido cómo se organizan las uniones, cómo se utilizan las subconsultas y la correlación, y qué columnas se solicitan. Todo lo que hace SQLAlchemy es, en última instancia, el resultado de una decisión iniciada por el desarrollador.
- No utilice un ORM si el problema no lo necesita. SQLAlchemy consta de un núcleo y un componente ORM independiente. Core ofrece un lenguaje de expresión SQL completo que permite la construcción Pythonic de construcciones SQL que se representan directamente en cadenas SQL para una base de datos de destino, devolviendo conjuntos de resultados que son esencialmente cursores DBAPI mejorados.
- Las transacciones deberían ser la norma. Con el ORM de SQLAlchemy, nada va al almacenamiento permanente hasta que se llama a commit(). SQLAlchemy alienta a las aplicaciones a crear un medio consistente para delinear el inicio y el final de una serie de operaciones.
- Nunca represente un valor literal en una declaración SQL. Los parámetros vinculados se utilizan en la mayor medida posible, lo que permite a los optimizadores de consultas almacenar en caché los planes de consultas de manera efectiva y hacer que los ataques de inyección SQL no sean un problema.
Documentación
La documentación más reciente está en:
https://www.sqlalchemy.org/docs/
Instalación / Requisitos
La documentación completa para la instalación se encuentra en Instalación.
Obtener ayuda/desarrollo/informes de errores
Consulte la Guía de la comunidad SQLAlchemy.
Código de conducta
Por encima de todo, SQLAlchemy pone gran énfasis en la comunicación educada, reflexiva y constructiva entre usuarios y desarrolladores. Consulte nuestro Código de conducta actual en Código de conducta.
Licencia
SQLAlchemy se distribuye bajo la licencia MIT.