pgmodel
app.contrib.sqlalchemy.pgmodel
Un Módulo de Python que expone una clase base, para generar una instancia con metodos sencillos y gestionar a una Base de Datos PostgreSQL, usando psycopg.
Para más información, te recomendamos leer la documentación del Proyecto.
- https://docs.sqlalchemy.org/en/20/orm/session_basics.html#session-basics
- https://docs.sqlalchemy.org/en/20/core/engines.html#engine-configuration
- https://docs.sqlalchemy.org/en/13/orm/extensions/declarative/mixins.html
- https://docs.sqlalchemy.org/en/20/orm/mapping_api.html#sqlalchemy.orm.DeclarativeBase
- https://docs.sqlalchemy.org/en/20/orm/mapping_api.html#sqlalchemy.orm.declared_attr
- https://docs.sqlalchemy.org/en/20/orm/queryguide/index.html
- https://docs.sqlalchemy.org/en/14/orm/query.html#sqlalchemy.orm.Query.filter
Base
Bases: DeclarativeBase
Clase base para todos los modelos de SQLAlchemy, que utilizan DeclarativeBase
.
Inherits
DeclarativeBase: La clase base de SQLAlchemy para modelos declarativos.
BaseModel
Esta clase proporciona una implementación por defecto para el atributo __tablename__
, derivado del nombre de la clase. Esto Garantiza que los nombres de tabla se crean automáticamente basándose en los nombres de clase del modelo.
Attributes:
Name | Type | Description |
---|---|---|
__tablename__ | str | El nombre de la tabla en la base de datos. Se establece automáticamente con el nombre de la clase en minúsculas. |
__tablename__()
Extrae el nombre de la tabla, definido en el campo __tablename__
, de la clase que se extiende de PgModel.
Returns:
Type | Description |
---|---|
str | El nombre de la tabla, derivado del nombre |
str | de la clase, en minúsculas. |
PgModel
Genera una instancia con metodos sencillos para el manejo de PostgreSQL
usando psycopg
.
Inherits
BaseModel: Proporciona la generación automática de nombres de tabla basada en el nombre de la clase. Base: La clase base de SQLAlchemy para modelos declarativos, permitiendo definiciones de modelos.
Attributes:
Name | Type | Description |
---|---|---|
_db | Optional[Session] | donde almacena el objeto de la sesion de SQLAlchemy. |
_prefix | str | El prefijo para las tablas. |
Raises:
Type | Description |
---|---|
TypeCheckError | error de comprobación de tipos |
maximum recursion depth exceeded | en caso de que no se pueda definir el valor de retorno de la propiedad |
Examples:
__init__(conn)
Constructor de la clase PgModel.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
conn | Request | una instancia de | required |
Raises:
Type | Description |
---|---|
RuntimeError | en caso de que no se pueda generar una conexión a la Base de Datos |
Exception | cualquier otra Excepción al momento de crear la conexión |
get_all(select_fields=None, limit=0)
Obtiene todos los registros de una tabla, adicionalmente permite una lista de campos a devolver y un limite para la cantidad de registros consultados.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
select_fields | list[str] | una lista con los posibles campos de los registros a retornar. por defecto | None |
limit | int | define el limite de registros a consultar. por defecto | 0 |
Warning
Este metódo esta en revisión, puede cambiar en el futuro.
Notes
- este método valida si cada campo, de la lista que se envia, existe en el modelo (objeto de tipo
__PgModel__
).
Returns:
Type | Description |
---|---|
Optional[list[dict[str, Any]]] | usualmente una lista de diccionarios con el resultado de la consulta, ó |
Examples:
get_by_id(item_id, select_fields=None)
Obtiene un registro de la Base de Datos por su ID, opcionalmente permite definir una lista de campos a devolver.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
item_id | int | el id único del registro a consultar | required |
select_fields | list[str] | una lista de campos a devolver, por defecto | None |
Warning
Este metódo esta en revisión, puede cambiar en el futuro.
Notes
- este método valida si cada campo, de la lista de campos que se envia, existe en el modelo (objeto de tipo PgModel).
Raises:
Type | Description |
---|---|
SQLAlchemyError | excepciones generadas por SQLAlchemy. |
Returns:
Type | Description |
---|---|
Optional[dict[str, Any]] | un diccionario con el registro consultado, ó |
Examples:
save()
Guarda un objeto (de tipo PgModel) en la Base de Datos.
Raises:
Type | Description |
---|---|
SQLAlchemyError | excepciones generadas por SQLAlchemy. |
Returns:
Type | Description |
---|---|
Optional[int] | el id del registro almacenado, ó |
Examples:
update()
Actualiza un objeto (de tipo PgModel) en la Base de Datos.
Raises:
Type | Description |
---|---|
SQLAlchemyError | excepciones generadas por SQLAlchemy. |
Returns:
Type | Description |
---|---|
Optional[int] | el id del registro actualizado, ó |
Examples:
remove(item_id)
Elimina un registro de la Base de Datos.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
item_id | int | el id único del registro a eliminar/actualizar (según el modo) | required |
Raises:
Type | Description |
---|---|
SQLAlchemyError | excepciones generadas por SQLAlchemy. |
Returns:
Type | Description |
---|---|
Any |
|
Examples:
raw_query(query, result_fetch='all', **params)
Ejecuta una consulta plana(raw query) de SQL.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
query | str | la consulta sql | required |
result_fetch | str | define la cantidad de resultados acordes a la consulta, por defecto | 'all' |
Returns:
Type | Description |
---|---|
Optional[dict[str, Any] | list[dict[str, Any]]] | Devuelve un diccionario con el primer resultado, en caso de que |
to_dict()
Convierte una instancia de PgModel en un diccionario.
Returns:
Type | Description |
---|---|
Optional[dict[str, Any]] | un diccionario con los campos y valores de la instancia ó |
custom_encoder(obj)
Método utilizado por orjson
para validar algunos tipos de datos (sobretodo fechas), mientras se decodifica los resultados de la consulta a la Base de Datos.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
obj | Any | un objeto para serializar una subclase ó tipos arbitrarios | required |
Notes
- Esta es una función recursiva.
- Esta función utiliza
strftime
para dar formato a las fechas con zona horaria.
Para más información, consulta:
Returns:
Type | Description |
---|---|
Any | un tipo soportado por |
Examples:
raw_json(row=None)
Convierte un objeto de tipo Row en un diccionario.
Notes
- Esta método es de uso interno, utilizado por
raw_query
Returns:
Type | Description |
---|---|
Any | un diccionario con los campos y valores del objeto tipo Row ó |