Skip to main content

Module for handler postgresql more easy

Project description

Sqlalchemy Module V0.3.6

Fachada de la libreria Sqlalchemy 1.4.x

Properties Requerido Valor por defecto Descripción
url_connection :heavy_check_mark: - Url de conexión de la base de datos
path_module_schema :heavy_check_mark: - Paquete de python donde se almacenaran todos las clases python que representan las tablas de base de datos
ddl_auto :heavy_check_mark: - Atributo que dependiendo de una valores especificos actuan sobre el comportamiento de la base de datos cuando arranca la aplicación

diagrama

QuickStart

En el momento que se importa el módulo "postgresql_db" se ejecuta la funcion "load_declarative_models()" esta funcion es la encargada de gestionar la creacion de la base de datos, por defecto usa la configuración del archivo properties.ini.

Propiedad ddl_auto

Dentro del archivo configuracion se puede definir un parametro ddl_auto que en funcion del valor actua de diferente manera contra la base de datos.

Al importar el modulo postgresql_db de la siguiente forma import postgresql_db se ejuta la funcion load_declarative_models() lo que da lugar a obtener dicho valor del fichero properties.ini y a tomar el valor de la variable ddl_auto tomando el valor del archivo de properties.ini

[BD_CORE]
db_ip=172.17.0.2
db_port=5432
db_user=postgres
db_password=mysecretpassword
db_name=sqlalchemy
url_connection=postgresql+psycopg2://%(db_user)s:%(db_password)s@%(db_ip)s:%(db_port)s/%(db_name)s
path_module_schema=models
ddl_auto=create

Las variables db_ip, db_port, db_user, db_password, db_name, url_connection son variables destinadas a la configuración de conxion con la base de datos. La variable url_connection no es necesario modificarla ya que es una variable compuesta para un uso mas sencillo.

Otras propiedades

ddl_auto

La variable ddl_auto puede tomar dos valores que explicaremos a continuación que son create y drop_create cualquier otro valor no tendra efecto

ddl_auto=create

Usando los modelos representados con clases de python genera las tablas automaticamente cuando se importa el módulo postgresql_db -> import postgresql_db las tablas antiguas no se borran, es decir. Si en el modelo ponemos el nombre de una tabla como users y luego lo cambiamos a user se crearan dos tablas la tabla con el nombre huerfano no se borra automaticamente.

ddl_auto=drop_create

Esta opcion brinda la opción de borrar todas las tables que esten representadas en los modelos y la vuelve a generar. Si existe una tabla y no esté representada en el modelo por algun cambio esta tabla no se borrara.

Caso de uso alternativo

Si por algun motivo desea ejecutar dicho metodo manualmente ignorando lo que este en el archivo de configuración evite importar el modulo de esta forma import postgresql_db importe directamente la funcion y asi evitar la ejecucion del modulo de esta forma from postgresql_db import load_declarative_models y posteriormente pasele el valor manualmente de esta forma load_declarative_models(ddl_auto='create')

path_module_schema

Esta variable define en que nombre del paquete va a almacenar los modelos para que la libreria los localice y cree las tablas automaticamente. Dado el nombre no importa si los modelos estan en multiples ficheros siempre y cuando esten debajo del paquete indicado

Es necesario importar Base de esta manera from postgresql_db import Base y extender de la clase Base para que la libreria sea capaz de encontrar todos los paquetes que se mapearan en la base de datos como se obseva en el siguiente ejemplo

from postgresql_db import Base
from sqlalchemy import Column, String
from postgresql_db.inmutables import _Params


class User(Base):
    __tablename__ = 'user'

    uuid = Column(String, primary_key=True)
    username = Column(String)
    email = Column(String)
    lastname = Column(String)

    def __init__(self, **kwargs):
        self.uuid = kwargs.get(_Params.UUID)
        self.username = kwargs.get(_Params.USERNAME)
        self.email = kwargs.get(_Params.EMAIL)
        self.lastname = kwargs.get(_Params.LASTNAME)

Consultas

Dentro de la libreria se categorizan 3 tipos de grupos de consultas. BasicQuery, StandardQuery, AdvanceQuery cada una posee diferentes tipos de consultas que veremos a continuancion con ejemplos

Para crear una transaccion y evitar llenar la base de datos de conexiones huerfanas es necesario cada vez que se vaya a usar alguna Query independiente de su tipo hacerlo de esta forma.

from postgresql_db import BasicQueryImpl
from postgresql_db.interfaces import BasicQuery
from postgresql_db.configs import StandardSession

if __name__ == '__main__':
    with StandardSession() as session:
        basic_query: BasicQuery = BasicQueryImpl(session=session)

Notese que BasicQuery, StandardQuery, AdvanceQuery son interfaces que pertenecen al modulo de postgresql_db.interfaces y tienen sus respectivas implementaciones que estan en el modulo de postgresql_db

BasicQuery

Reune un grupo de operaciones con la base de datos basico como guardar y retornar todos lo valores

save()

Este metodo recibe como parametro un modelo directo que representa a la base de datos save(model=modelo) como se muestra a continuación

from models import User
from postgresql_db import BasicQueryImpl
from generic_utils import CleanDevGenericUtils
from postgresql_db.interfaces import BasicQuery
from postgresql_db.configs import StandardSession

utils: CleanDevGenericUtils = CleanDevGenericUtils()

if __name__ == '__main__':
    user: User = User(
        uuid=utils.get_uuid4(),
        username='Daniel',
        email='danielr@mail.com',
        lastname='Rodriguez'
    )

    with StandardSession() as session:
        basic_query: BasicQuery = BasicQueryImpl(session=session)
        basic_query.save(model=user)

save_all()

Este metodo recibe una lista de modelos y los guarda de una sola consulta en la base de datos save_all(models=list_models) como se muestra a continuación

from models import User
from postgresql_db import BasicQueryImpl
from generic_utils import CleanDevGenericUtils
from postgresql_db.interfaces import BasicQuery
from postgresql_db.configs import StandardSession

utils: CleanDevGenericUtils = CleanDevGenericUtils()

if __name__ == '__main__':
    user1: User = User(
        uuid=utils.get_uuid4(),
        username='Daniel',
        email='danielr@mail.com',
        lastname='Rodriguez'
    )

    user2: User = User(
        uuid=utils.get_uuid4(),
        username='Pedro',
        email='pedro@mail.com',
        lastname='Ramos'
    )

    userN: User = User(
        uuid=utils.get_uuid4(),
        username='Juan',
        email='juan@mail.com',
        lastname='Hernandez'
    )

    list_model: list = [user1, user2, userN]

    with StandardSession() as session:
        basic_query: BasicQuery = BasicQueryImpl(session=session)
        basic_query.save_all(list_model=list_model)

find_all()

Este metodo recibe un nombre en formato string que debe de coincidir con el nombre de la clase del modelo y retornara todos los registros de dicha tabla en una lista de esta manera basic_query.find_all(class_name='User')

from postgresql_db import BasicQueryImpl
from generic_utils import CleanDevGenericUtils
from postgresql_db.interfaces import BasicQuery
from postgresql_db.configs import StandardSession

utils: CleanDevGenericUtils = CleanDevGenericUtils()

if __name__ == '__main__':

    with StandardSession() as session:
        basic_query: BasicQuery = BasicQueryImpl(session=session)
        user_list: list = basic_query.find_all(class_name='User')
        for user in user_list:
            print(user.uuid)

StandardQuery

Reune un grupo de operaciones con la base de datos relacionadas con borrados y consultas filtrados por campos en concreto.

La mayoria de metodos de este grupo recibedos parametros class_name y query_dict donde 'class_name' viene siendo el nombre de la clase que representa la tabla en base de datos y 'query_dict' el patron de busqueda en formato dict de python como veremos a continuación en los ejemplos siguientes.

Para las pruebas tendremos en cuenta que los registro de base de datos son los siguientes

uuid username email lastname
0548604f-4990-482b-977a-7c4164c816a9 Manuel manuel@mail.com Rodriguez
7a4fb3c5-5470-4da6-9e37-96bff32a0d4b Daniel danielr@mail.com Rodriguez
8ba5f9a1-24e0-4706-bde1-823954ee584d Juan juan@mail.com Hernandez
af3bccd6-476e-4a01-9d60-ff15a89eaaef Pedro pedro@mail.com Ramos

find_by_filter()

Este metodo recibe como parametros class_name, query_dict donde:
class_name es el nombre de la clase que representa la tabla en base de datos query_dict es la query que seleccionara los registros

Usa en la query el tipico LIKE=%value% para la consulta

from postgresql_db import StandardQueryImpl
from generic_utils import CleanDevGenericUtils
from postgresql_db.interfaces import StandardQuery
from postgresql_db.configs import StandardSession

utils: CleanDevGenericUtils = CleanDevGenericUtils()

if __name__ == '__main__':
    # | 0548604f-4990-482b-977a-7c4164c816a9 | Manuel   | manuel@mail.com  | Rodriguez |
    # | 7a4fb3c5-5470-4da6-9e37-96bff32a0d4b | Daniel   | danielr@mail.com | Rodriguez |
    # | 8ba5f9a1-24e0-4706-bde1-823954ee584d | Juan     | juan@mail.com    | Hernandez |
    # | af3bccd6-476e-4a01-9d60-ff15a89eaaef | Pedro    | pedro@mail.com   | Ramos     |

    with StandardSession() as session:
        standard_query: StandardQuery = StandardQueryImpl(session=session)
        user_list = standard_query.find_by_filter(
            class_name='User',
            query_dict={'email': 'manuel@mail.com'}
        )  # retorna 1 item

        # | 0548604f-4990-482b-977a-7c4164c816a9 | Manuel   | manuel@mail.com  | Rodriguez |

        user_list = standard_query.find_by_filter(
            class_name='User',
            query_dict={'lastname': 'Rodriguez'}
        )  # retorna 2 item

        # | 0548604f-4990-482b-977a-7c4164c816a9 | Manuel   | manuel@mail.com  | Rodriguez |
        # | 7a4fb3c5-5470-4da6-9e37-96bff32a0d4b | Daniel   | danielr@mail.com | Rodriguez |

        user_list = standard_query.find_by_filter(
            class_name='User',
            query_dict={
                'lastname': 'Rodriguez',
                'username': 'Manuel'
            }
        )  # retorna 1 item

        # | 0548604f-4990-482b-977a-7c4164c816a9 | Manuel   | manuel@mail.com  | Rodriguez |

find_by_filter_like()

Este metodo recibe como parametros class_name, query_dict donde:
class_name es el nombre de la clase que representa la tabla en base de datos query_dict es la query que seleccionara los registros

Usa en la query el tipico LIKE=%value% para la consulta

from postgresql_db import StandardQueryImpl
from generic_utils import CleanDevGenericUtils
from postgresql_db.interfaces import StandardQuery
from postgresql_db.configs import StandardSession

utils: CleanDevGenericUtils = CleanDevGenericUtils()

if __name__ == '__main__':
    # | 0548604f-4990-482b-977a-7c4164c816a9 | Manuel   | manuel@mail.com  | Rodriguez |
    # | 7a4fb3c5-5470-4da6-9e37-96bff32a0d4b | Daniel   | danielr@mail.com | Rodriguez |
    # | 8ba5f9a1-24e0-4706-bde1-823954ee584d | Juan     | juan@mail.com    | Hernandez |
    # | af3bccd6-476e-4a01-9d60-ff15a89eaaef | Pedro    | pedro@mail.com   | Ramos     |

    with StandardSession() as session:
        standard_query: StandardQuery = StandardQueryImpl(session=session)
        user_list = standard_query.find_by_filter_like(
            class_name='User',
            query_dict={'lastname': 'a'}
        )  # retorna 4 item

        # | 8ba5f9a1-24e0-4706-bde1-823954ee584d | Juan     | juan@mail.com    | Hernandez |
        # | af3bccd6-476e-4a01-9d60-ff15a89eaaef | Pedro    | pedro@mail.com   | Ramos     |

        user_list = standard_query.find_by_filter_like(
            class_name='User',
            query_dict={'lastname': 'r'}
        )  # retorna 3 item

        # | 0548604f-4990-482b-977a-7c4164c816a9 | Manuel   | manuel@mail.com  | Rodriguez |
        # | 7a4fb3c5-5470-4da6-9e37-96bff32a0d4b | Daniel   | danielr@mail.com | Rodriguez |
        # | 8ba5f9a1-24e0-4706-bde1-823954ee584d | Juan     | juan@mail.com    | Hernandez |

        user_list = standard_query.find_by_filter_like(
            class_name='User',
            query_dict={
                'lastname': 'r',
                'email': 'juan'
            }
        )  # retorna 1 item

        # | 8ba5f9a1-24e0-4706-bde1-823954ee584d | Juan     | juan@mail.com    | Hernandez |

get_one()

Este metodo recibe como parametros class_name, query_dict donde:
class_name es el nombre de la clase que representa la tabla en base de datos query_dict es la query que seleccionara los registros

Retorna un unico modelo por lo tanto lo mas aconsejable es usarlo con campos como claves primarias

from models import User
from postgresql_db import StandardQueryImpl
from generic_utils import CleanDevGenericUtils
from postgresql_db.interfaces import StandardQuery
from postgresql_db.configs import StandardSession

utils: CleanDevGenericUtils = CleanDevGenericUtils()

if __name__ == '__main__':
    # | 0548604f-4990-482b-977a-7c4164c816a9 | Manuel   | manuel@mail.com  | Rodriguez |
    # | 7a4fb3c5-5470-4da6-9e37-96bff32a0d4b | Daniel   | danielr@mail.com | Rodriguez |
    # | 8ba5f9a1-24e0-4706-bde1-823954ee584d | Juan     | juan@mail.com    | Hernandez |
    # | af3bccd6-476e-4a01-9d60-ff15a89eaaef | Pedro    | pedro@mail.com   | Ramos     |

    with StandardSession() as session:
        standard_query: StandardQuery = StandardQueryImpl(session=session)
        user: User = standard_query.get_one(class_name='User', query_dict={'email': 'juan@mail.com'})

        # | 8ba5f9a1-24e0-4706-bde1-823954ee584d | Juan     | juan@mail.com    | Hernandez |

get_first()

Este metodo recibe como parametros class_name, query_dict donde:
class_name es el nombre de la clase que representa la tabla en base de datos query_dict es la query que seleccionara los registros

Retorna un unico modelo pese a no ser un elemento unico en la base de datos, retorna la primera ocurrencia que cumpla con dicho criterio

from models import User
from postgresql_db import StandardQueryImpl
from generic_utils import CleanDevGenericUtils
from postgresql_db.interfaces import StandardQuery
from postgresql_db.configs import StandardSession

utils: CleanDevGenericUtils = CleanDevGenericUtils()

if __name__ == '__main__':
    # | 0548604f-4990-482b-977a-7c4164c816a9 | Manuel   | manuel@mail.com  | Rodriguez |
    # | 7a4fb3c5-5470-4da6-9e37-96bff32a0d4b | Daniel   | danielr@mail.com | Rodriguez |
    # | 8ba5f9a1-24e0-4706-bde1-823954ee584d | Juan     | juan@mail.com    | Hernandez |
    # | af3bccd6-476e-4a01-9d60-ff15a89eaaef | Pedro    | pedro@mail.com   | Ramos     |

    with StandardSession() as session:
        standard_query: StandardQuery = StandardQueryImpl(session=session)
        user: User = standard_query.get_first(class_name='User', query_dict={'lastname': 'Rodriguez'})
        # | 7a4fb3c5-5470-4da6-9e37-96bff32a0d4b | Daniel   | danielr@mail.com | Rodriguez |

get_first_like()

Este metodo recibe como parametros class_name, query_dict donde:
class_name es el nombre de la clase que representa la tabla en base de datos query_dict es la query que seleccionara los registros

Retorna un unico modelo pese a no ser un elemento unico en la base de datos que cumpla con dicho criterio usando

Usa en la query el tipico LIKE=%value% para la consulta

from models import User
from postgresql_db import StandardQueryImpl
from generic_utils import CleanDevGenericUtils
from postgresql_db.interfaces import StandardQuery
from postgresql_db.configs import StandardSession

utils: CleanDevGenericUtils = CleanDevGenericUtils()

if __name__ == '__main__':
    # | 0548604f-4990-482b-977a-7c4164c816a9 | Manuel   | manuel@mail.com  | Rodriguez |
    # | 7a4fb3c5-5470-4da6-9e37-96bff32a0d4b | Daniel   | danielr@mail.com | Rodriguez |
    # | 8ba5f9a1-24e0-4706-bde1-823954ee584d | Juan     | juan@mail.com    | Hernandez |
    # | af3bccd6-476e-4a01-9d60-ff15a89eaaef | Pedro    | pedro@mail.com   | Ramos     |

    with StandardSession() as session:
        standard_query: StandardQuery = StandardQueryImpl(session=session)
        user: User = standard_query.get_first_like(class_name='User', query_dict={'lastname': 'Rodriguez'})
        # | 7a4fb3c5-5470-4da6-9e37-96bff32a0d4b | Daniel   | danielr@mail.com | Rodriguez |

update()

Este metodo recibe como parametros class_name, query_dict, update_data donde:
class_name es el nombre de la clase que representa la tabla en base de datos query_dict es la query que seleccionara los registros afectados por la modificación update_data los registros que se van a actualizar para todos los registros selecionados por la busqueda

Actualiza los registros selecionados en la query y los actualiza usando el criterio pasado en `update_data

from models import User
from postgresql_db import StandardQueryImpl
from generic_utils import CleanDevGenericUtils
from postgresql_db.interfaces import StandardQuery
from postgresql_db.configs import StandardSession

utils: CleanDevGenericUtils = CleanDevGenericUtils()

if __name__ == '__main__':
    # | 0548604f-4990-482b-977a-7c4164c816a9 | Manuel   | manuel@mail.com  | Rodriguez |
    # | 7a4fb3c5-5470-4da6-9e37-96bff32a0d4b | Daniel   | danielr@mail.com | Rodriguez |
    # | 8ba5f9a1-24e0-4706-bde1-823954ee584d | Juan     | juan@mail.com    | Hernandez |
    # | af3bccd6-476e-4a01-9d60-ff15a89eaaef | Pedro    | pedro@mail.com   | Ramos     |

    with StandardSession() as session:
        standard_query: StandardQuery = StandardQueryImpl(session=session)
        update_row: dict = {
            'uuid': '0548604f-4990-482b-977a-7c4164c816a9',
            'username': 'Manuel'
        }
        user: User = standard_query.get_first_like(class_name='User', query_dict={'lastname': 'Rodriguez'})
        user: User = standard_query.update(
            class_name='User',
            query_dict={'email': 'manuel@mail.com'},
            update_data=update_row
        )
        # | 0548604f-4990-482b-977a-7c4164c816a9 | Manuela   | manuel@mail.com  | Rodriguez |

update_like()

Este metodo recibe como parametros class_name, query_dict, update_data donde:
class_name es el nombre de la clase que representa la tabla en base de datos query_dict es la query que seleccionara los registros afectados por la modificación update_data los registros que se van a actualizar para todos los registros selecionados por la busqueda

Actualiza los registros selecionados en la query y los actualiza usando el criterio pasado en update_data Usa en la query el tipico LIKE=%value% para la consulta

number_rows()

Este metodo recibe como parametros class_name, query_dict donde:
class_name es el nombre de la clase que representa la tabla en base de datos query_dict es la query que seleccionara los registros a contar

Retorna el numero de registro encontrados

from postgresql_db import StandardQueryImpl
from generic_utils import CleanDevGenericUtils
from postgresql_db.interfaces import StandardQuery
from postgresql_db.configs import StandardSession

utils: CleanDevGenericUtils = CleanDevGenericUtils()

if __name__ == '__main__':
    with StandardSession() as session:
        standard_query: StandardQuery = StandardQueryImpl(session=session)

        # | 0548604f-4990-482b-977a-7c4164c816a9 | Manuel   | manuel@mail.com  | Rodriguez |
        # | 7a4fb3c5-5470-4da6-9e37-96bff32a0d4b | Daniel   | danielr@mail.com | Rodriguez |
        # | 8ba5f9a1-24e0-4706-bde1-823954ee584d | Juan     | juan@mail.com    | Hernandez |
        # | af3bccd6-476e-4a01-9d60-ff15a89eaaef | Pedro    | pedro@mail.com   | Ramos     |

        rows: int = standard_query.number_rows(
            class_name='User',
            query_dict={'email': 'manuel@mail.com'},
        )
        print(rows)  # 1

        rows: int = standard_query.number_rows(
            class_name='User',
            query_dict={},
        )
        print(rows)  # 4

delete()

Este metodo recibe como parametros class_name, query_dict donde:
class_name es el nombre de la clase que representa la tabla en base de datos query_dict es la query que seleccionara los registros a contar

Elimina todos los registros seleccionados en la consulta

from postgresql_db import StandardQueryImpl
from generic_utils import CleanDevGenericUtils
from postgresql_db.interfaces import StandardQuery
from postgresql_db.configs import StandardSession

utils: CleanDevGenericUtils = CleanDevGenericUtils()

if __name__ == '__main__':
    with StandardSession() as session:
        standard_query: StandardQuery = StandardQueryImpl(session=session)

        # | 0548604f-4990-482b-977a-7c4164c816a9 | Manuel   | manuel@mail.com  | Rodriguez |
        # | 7a4fb3c5-5470-4da6-9e37-96bff32a0d4b | Daniel   | danielr@mail.com | Rodriguez |
        # | 8ba5f9a1-24e0-4706-bde1-823954ee584d | Juan     | juan@mail.com    | Hernandez |
        # | af3bccd6-476e-4a01-9d60-ff15a89eaaef | Pedro    | pedro@mail.com   | Ramos     |

        standard_query.delete(
            class_name='User',
            query_dict={'email': 'manuel@mail.com'},
        )

        # | 7a4fb3c5-5470-4da6-9e37-96bff32a0d4b | Daniel   | danielr@mail.com | Rodriguez |
        # | 8ba5f9a1-24e0-4706-bde1-823954ee584d | Juan     | juan@mail.com    | Hernandez |
        # | af3bccd6-476e-4a01-9d60-ff15a89eaaef | Pedro    | pedro@mail.com   | Ramos     |

delete_like()

Este metodo recibe como parametros class_name, query_dict donde:
class_name es el nombre de la clase que representa la tabla en base de datos query_dict es la query que seleccionara los registros a contar

Elimina todos los registros seleccionados en la consulta

Usa en la query el tipico LIKE=%value% para la consulta

from postgresql_db import StandardQueryImpl
from generic_utils import CleanDevGenericUtils
from postgresql_db.interfaces import StandardQuery
from postgresql_db.configs import StandardSession

utils: CleanDevGenericUtils = CleanDevGenericUtils()

if __name__ == '__main__':
    with StandardSession() as session:
        standard_query: StandardQuery = StandardQueryImpl(session=session)

        # | 0548604f-4990-482b-977a-7c4164c816a9 | Manuel   | manuel@mail.com  | Rodriguez |
        # | 7a4fb3c5-5470-4da6-9e37-96bff32a0d4b | Daniel   | danielr@mail.com | Rodriguez |
        # | 8ba5f9a1-24e0-4706-bde1-823954ee584d | Juan     | juan@mail.com    | Hernandez |
        # | af3bccd6-476e-4a01-9d60-ff15a89eaaef | Pedro    | pedro@mail.com   | Ramos     |

        standard_query.delete_like()(
            class_name='User',
            query_dict={'lastname': 'z'},
        )

        # | af3bccd6-476e-4a01-9d60-ff15a89eaaef | Pedro    | pedro@mail.com   | Ramos     |

AdvanceQuery

find_all()

Este metodo recibe como parametros class_name, query_dict donde:
class_name es el nombre de la clase que representa la tabla en base de datos page el numero de pagina a consultar row_for_page numero de registros que retorna para esa pagina

Busca todos los registro de una tabla y los pagina segun se le indique

from postgresql_db import AdvanceQuerysImpl
from generic_utils import CleanDevGenericUtils
from postgresql_db.interfaces import AdvanceQuery
from postgresql_db.configs import StandardSession

utils: CleanDevGenericUtils = CleanDevGenericUtils()

if __name__ == '__main__':
    with StandardSession() as session:
        advance_query: AdvanceQuery = AdvanceQuerysImpl(session=session)

        # | 0548604f-4990-482b-977a-7c4164c816a9 | Manuel   | manuel@mail.com  | Rodriguez |
        # | 7a4fb3c5-5470-4da6-9e37-96bff32a0d4b | Daniel   | danielr@mail.com | Rodriguez |
        # | 8ba5f9a1-24e0-4706-bde1-823954ee584d | Juan     | juan@mail.com    | Hernandez |
        # | af3bccd6-476e-4a01-9d60-ff15a89eaaef | Pedro    | pedro@mail.com   | Ramos     |

        list_users: list = advance_query.find_all(class_name='User', page=0, row_for_page=1)
        # | 0548604f-4990-482b-977a-7c4164c816a9 | Manuel   | manuel@mail.com  | Rodriguez |

        list_users: list = advance_query.find_all(class_name='User', page=1, row_for_page=1)
        # | 7a4fb3c5-5470-4da6-9e37-96bff32a0d4b | Daniel   | danielr@mail.com | Rodriguez |

        list_users: list = advance_query.find_all(class_name='User', page=2, row_for_page=1)
        # | 8ba5f9a1-24e0-4706-bde1-823954ee584d | Juan     | juan@mail.com    | Hernandez |

        list_users: list = advance_query.find_all(class_name='User', page=3, row_for_page=1)
        # | af3bccd6-476e-4a01-9d60-ff15a89eaaef | Pedro    | pedro@mail.com   | Ramos     |

        list_users: list = advance_query.find_all(class_name='User', page=0, row_for_page=2)
        # | 0548604f-4990-482b-977a-7c4164c816a9 | Manuel   | manuel@mail.com  | Rodriguez |
        # | 7a4fb3c5-5470-4da6-9e37-96bff32a0d4b | Daniel   | danielr@mail.com | Rodriguez |

        list_users: list = advance_query.find_all(class_name='User', page=1, row_for_page=2)
        # | 8ba5f9a1-24e0-4706-bde1-823954ee584d | Juan     | juan@mail.com    | Hernandez |
        # | af3bccd6-476e-4a01-9d60-ff15a89eaaef | Pedro    | pedro@mail.com   | Ramos     |

find_by_filter()

Este metodo recibe como parametros class_name, query_dict donde:
class_name es el nombre de la clase que representa la tabla en base de datos query_dict es la query que seleccionara los registros a contar page el numero de pagina a consultar row_for_page numero de registros que retorna para esa pagina

from postgresql_db import AdvanceQuerysImpl
from generic_utils import CleanDevGenericUtils
from postgresql_db.interfaces import AdvanceQuery
from postgresql_db.configs import StandardSession

utils: CleanDevGenericUtils = CleanDevGenericUtils()

if __name__ == '__main__':
    with StandardSession() as session:
        advance_query: AdvanceQuery = AdvanceQuerysImpl(session=session)

        # | 0548604f-4990-482b-977a-7c4164c816a9 | Manuel   | manuel@mail.com  | Rodriguez |
        # | 7a4fb3c5-5470-4da6-9e37-96bff32a0d4b | Daniel   | danielr@mail.com | Rodriguez |
        # | 8ba5f9a1-24e0-4706-bde1-823954ee584d | Juan     | juan@mail.com    | Hernandez |
        # | af3bccd6-476e-4a01-9d60-ff15a89eaaef | Pedro    | pedro@mail.com   | Ramos     |

        list_users: list = advance_query.find_by_filter(
            class_name='User',
            query_dict={'lastname': 'Rodriguez'},
            page=0,
            row_for_page=2
        )
        # | 0548604f-4990-482b-977a-7c4164c816a9 | Manuel   | manuel@mail.com  | Rodriguez |
        # | 7a4fb3c5-5470-4da6-9e37-96bff32a0d4b | Daniel   | danielr@mail.com | Rodriguez |

Busca los registro segun de una tabla segun criterio elegido y los pagina segun se le indique

find_by_filter_like()

Este metodo recibe como parametros class_name, query_dict donde:
class_name es el nombre de la clase que representa la tabla en base de datos query_dict es la query que seleccionara los registros a contar page el numero de pagina a consultar row_for_page numero de registros que retorna para esa pagina

Busca los registro segun de una tabla segun criterio elegido y los pagina segun se le indique

Usa en la query el tipico LIKE=%value% para la consulta

from postgresql_db import AdvanceQuerysImpl
from generic_utils import CleanDevGenericUtils
from postgresql_db.interfaces import AdvanceQuery
from postgresql_db.configs import StandardSession

utils: CleanDevGenericUtils = CleanDevGenericUtils()

if __name__ == '__main__':
    with StandardSession() as session:
        advance_query: AdvanceQuery = AdvanceQuerysImpl(session=session)

        # | 0548604f-4990-482b-977a-7c4164c816a9 | Manuel   | manuel@mail.com  | Rodriguez |
        # | 7a4fb3c5-5470-4da6-9e37-96bff32a0d4b | Daniel   | danielr@mail.com | Rodriguez |
        # | 8ba5f9a1-24e0-4706-bde1-823954ee584d | Juan     | juan@mail.com    | Hernandez |
        # | af3bccd6-476e-4a01-9d60-ff15a89eaaef | Pedro    | pedro@mail.com   | Ramos     |

        list_users: list = advance_query.find_by_filter_like(
            class_name='User',
            query_dict={'lastname': 'z'},
            page=0,
            row_for_page=2
        )
        # | 0548604f-4990-482b-977a-7c4164c816a9 | Manuel   | manuel@mail.com  | Rodriguez |
        # | 7a4fb3c5-5470-4da6-9e37-96bff32a0d4b | Daniel   | danielr@mail.com | Rodriguez |

        list_users = advance_query.find_by_filter_like(
            class_name='User',
            query_dict={'lastname': 'z'},
            page=1,
            row_for_page=2
        )
        # | 8ba5f9a1-24e0-4706-bde1-823954ee584d | Juan     | juan@mail.com    | Hernandez |

find_by_filter_and_order_by()

Este metodo recibe como parametros class_name, query_dict donde:
class_name es el nombre de la clase que representa la tabla en base de datos query_dict es la query que seleccionara los registros a contar order_type elige el tipo de orden ascendente o descendente order_colum columna por la cual desea ordenar page el numero de pagina a consultar row_for_page numero de registros que retorna para esa pagina

Busca los registro segun de una tabla segun criterio elegido, los pagina y lo ordena por la columna indicada

from postgresql_db import AdvanceQuerysImpl
from generic_utils import CleanDevGenericUtils
from postgresql_db.interfaces import AdvanceQuery
from postgresql_db.configs import StandardSession

utils: CleanDevGenericUtils = CleanDevGenericUtils()

if __name__ == '__main__':
    with StandardSession() as session:
        advance_query: AdvanceQuery = AdvanceQuerysImpl(session=session)

        # | 0548604f-4990-482b-977a-7c4164c816a9 | Manuel   | manuel@mail.com  | Rodriguez |
        # | 7a4fb3c5-5470-4da6-9e37-96bff32a0d4b | Daniel   | danielr@mail.com | Rodriguez |
        # | 8ba5f9a1-24e0-4706-bde1-823954ee584d | Juan     | juan@mail.com    | Hernandez |
        # | af3bccd6-476e-4a01-9d60-ff15a89eaaef | Pedro    | pedro@mail.com   | Ramos     |

        list_users: list = advance_query.find_by_filter_and_order_by(
            class_name='User',
            query_dict={},
            order_type='asc',
            order_colum='lastname',
            page=0,
            row_for_page=4
        )
        # | 8ba5f9a1-24e0-4706-bde1-823954ee584d | Juan     | juan@mail.com    | Hernandez |
        # | af3bccd6-476e-4a01-9d60-ff15a89eaaef | Pedro    | pedro@mail.com   | Ramos     |
        # | 7a4fb3c5-5470-4da6-9e37-96bff32a0d4b | Daniel   | danielr@mail.com | Rodriguez |
        # | 0548604f-4990-482b-977a-7c4164c816a9 | Manuel   | manuel@mail.com  | Rodriguez |

        list_users: list = advance_query.find_by_filter_and_order_by(
            class_name='User',
            query_dict={},
            order_type='desc',
            order_colum='lastname',
            page=0,
            row_for_page=4
        )

        # | 7a4fb3c5-5470-4da6-9e37-96bff32a0d4b | Daniel   | danielr@mail.com | Rodriguez |
        # | 0548604f-4990-482b-977a-7c4164c816a9 | Manuel   | manuel@mail.com  | Rodriguez |
        # | af3bccd6-476e-4a01-9d60-ff15a89eaaef | Pedro    | pedro@mail.com   | Ramos     |
        # | 8ba5f9a1-24e0-4706-bde1-823954ee584d | Juan     | juan@mail.com    | Hernandez |

find_by_filter_like_and_order_by()

Este metodo recibe como parametros class_name, query_dict donde:
class_name es el nombre de la clase que representa la tabla en base de datos query_dict es la query que seleccionara los registros a contar order_type elige el tipo de orden ascendente o descendente order_colum columna por la cual desea ordenar page el numero de pagina a consultar row_for_page numero de registros que retorna para esa pagina

Busca los registro segun de una tabla segun criterio elegido, los pagina y lo ordena por la columna indicada

Usa en la query el tipico LIKE=%value% para la consulta

from postgresql_db import AdvanceQuerysImpl
from generic_utils import CleanDevGenericUtils
from postgresql_db.interfaces import AdvanceQuery
from postgresql_db.configs import StandardSession

utils: CleanDevGenericUtils = CleanDevGenericUtils()

if __name__ == '__main__':
    with StandardSession() as session:
        advance_query: AdvanceQuery = AdvanceQuerysImpl(session=session)

        # | 0548604f-4990-482b-977a-7c4164c816a9 | Manuel   | manuel@mail.com  | Rodriguez |
        # | 7a4fb3c5-5470-4da6-9e37-96bff32a0d4b | Daniel   | danielr@mail.com | Rodriguez |
        # | 8ba5f9a1-24e0-4706-bde1-823954ee584d | Juan     | juan@mail.com    | Hernandez |
        # | af3bccd6-476e-4a01-9d60-ff15a89eaaef | Pedro    | pedro@mail.com   | Ramos     |

        list_users: list = advance_query.find_by_filter_and_order_by(
            class_name='User',
            query_dict={},
            order_type='asc',
            order_colum='lastname',
            page=0,
            row_for_page=4
        )
        # | 8ba5f9a1-24e0-4706-bde1-823954ee584d | Juan     | juan@mail.com    | Hernandez |
        # | af3bccd6-476e-4a01-9d60-ff15a89eaaef | Pedro    | pedro@mail.com   | Ramos     |
        # | 7a4fb3c5-5470-4da6-9e37-96bff32a0d4b | Daniel   | danielr@mail.com | Rodriguez |
        # | 0548604f-4990-482b-977a-7c4164c816a9 | Manuel   | manuel@mail.com  | Rodriguez |

        list_users: list = advance_query.find_by_filter_and_order_by(
            class_name='User',
            query_dict={},
            order_type='desc',
            order_colum='lastname',
            page=0,
            row_for_page=4
        )

        # | 7a4fb3c5-5470-4da6-9e37-96bff32a0d4b | Daniel   | danielr@mail.com | Rodriguez |
        # | 0548604f-4990-482b-977a-7c4164c816a9 | Manuel   | manuel@mail.com  | Rodriguez |
        # | af3bccd6-476e-4a01-9d60-ff15a89eaaef | Pedro    | pedro@mail.com   | Ramos     |
        # | 8ba5f9a1-24e0-4706-bde1-823954ee584d | Juan     | juan@mail.com    | Hernandez |

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cleandev-postgresql-db-0.3.6.tar.gz (16.9 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page