Package: cleandev-postgresql-db
Sqlalchemy Module V0.3.6Fachadade la libreria Sqlalchemy 1.4.xPropertiesRequeridoValor por defectoDescripciónurl_connection:heavy_check_mark:-Url de conexión de la base de datospath_module_schema:heavy_check_mark:-Paquete de python donde se almacenaran todos las clases python que representan las tablas de base de datosddl_auto:heavy_check_mark:-Atributo que dependiendo de una valores especificos actuan sobre el comportamiento de la base de datos cuando arranca la aplicaciónQuickStartEn 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_autoDentro del archivo configuracion se puede definir un parametroddl_autoque en funcion del valor actua de diferente
manera contra la base de datos.Al importar el modulopostgresql_dbde la siguiente formaimport postgresql_dbse ejuta la
funcionload_declarative_models()lo que da lugar a obtener dicho valor del ficheroproperties.iniy a tomar el valor de la variableddl_autotomando
el valor del archivo deproperties.ini[BD_CORE]db_ip=172.17.0.2db_port=5432db_user=postgresdb_password=mysecretpassworddb_name=sqlalchemyurl_connection=postgresql+psycopg2://%(db_user)s:%(db_password)s@%(db_ip)s:%(db_port)s/%(db_name)spath_module_schema=modelsddl_auto=createLas variablesdb_ip,db_port,db_user,db_password,db_name,url_connectionson variables destinadas a
la configuración de conxion con la base de datos. La variableurl_connectionno es necesario modificarla ya que es
una variable compuesta para un uso mas sencillo.Otras propiedadesddl_autoLa variable ddl_auto puede tomar dos valores que explicaremos a continuación que soncreateydrop_createcualquier
otro valor no tendra efectoddl_auto=createUsando los modelos representados con clases de python genera las tablas automaticamente cuando se importa el módulopostgresql_db->import postgresql_dblas tablas antiguas no se borran, es decir. Si en el modelo ponemos el nombre
de una tabla comousersy luego lo cambiamos auserse crearan dos tablas la tabla con el nombre huerfano
no se borra automaticamente.ddl_auto=drop_createEsta 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 alternativoSi por algun motivo desea ejecutar dicho metodo manualmente ignorando lo que este en el archivo de configuración
evite importar el modulo de esta formaimport postgresql_dbimporte directamente la funcion y asi evitar la ejecucion
del modulo de esta formafrom postgresql_db import load_declarative_modelsy posteriormente pasele el valor
manualmente
de esta formaload_declarative_models(ddl_auto='create')path_module_schemaEsta 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 indicadoEs necesario importarBasede esta manerafrom postgresql_db import Basey extender de la claseBasepara que
la libreria sea capaz de encontrar todos los paquetes que se mapearan en la base de datos como se obseva en el siguiente
ejemplofrompostgresql_dbimportBasefromsqlalchemyimportColumn,Stringfrompostgresql_db.inmutablesimport_ParamsclassUser(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)ConsultasDentro de la libreria se categorizan 3 tipos de grupos de consultas.BasicQuery,StandardQuery,AdvanceQuerycada
una posee diferentes tipos de consultas que veremos a continuancion con ejemplosPara crear una transaccion y evitar llenar la base de datos de conexiones huerfanas es necesario cada vez que se vaya
a usar algunaQueryindependiente de su tipo hacerlo de esta forma.frompostgresql_dbimportBasicQueryImplfrompostgresql_db.interfacesimportBasicQueryfrompostgresql_db.configsimportStandardSessionif__name__=='__main__':withStandardSession()assession:basic_query:BasicQuery=BasicQueryImpl(session=session)Notese queBasicQuery,StandardQuery,AdvanceQueryson interfaces que pertenecen al modulo depostgresql_db.interfacesy tienen sus respectivas implementaciones que estan en el modulo depostgresql_dbBasicQueryReune un grupo de operaciones con la base de datos basico como guardar y retornar todos lo valoressave()Este metodo recibe como parametro un modelo directo que representa a la base de datossave(model=modelo)como se
muestra a continuaciónfrommodelsimportUserfrompostgresql_dbimportBasicQueryImplfromgeneric_utilsimportCleanDevGenericUtilsfrompostgresql_db.interfacesimportBasicQueryfrompostgresql_db.configsimportStandardSessionutils:CleanDevGenericUtils=CleanDevGenericUtils()if__name__=='__main__':user:User=User(uuid=utils.get_uuid4(),username='Daniel',email='danielr@mail.com',lastname='Rodriguez')withStandardSession()assession: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 datossave_all(models=list_models)como se muestra a continuaciónfrommodelsimportUserfrompostgresql_dbimportBasicQueryImplfromgeneric_utilsimportCleanDevGenericUtilsfrompostgresql_db.interfacesimportBasicQueryfrompostgresql_db.configsimportStandardSessionutils: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]withStandardSession()assession: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 manerabasic_query.find_all(class_name='User')frompostgresql_dbimportBasicQueryImplfromgeneric_utilsimportCleanDevGenericUtilsfrompostgresql_db.interfacesimportBasicQueryfrompostgresql_db.configsimportStandardSessionutils:CleanDevGenericUtils=CleanDevGenericUtils()if__name__=='__main__':withStandardSession()assession:basic_query:BasicQuery=BasicQueryImpl(session=session)user_list:list=basic_query.find_all(class_name='User')foruserinuser_list:print(user.uuid)StandardQueryReune 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 parametrosclass_nameyquery_dictdonde '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 formatodictde
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 siguientesuuidusernameemaillastname0548604f-4990-482b-977a-7c4164c816a9Manuelmanuel@mail.comRodriguez7a4fb3c5-5470-4da6-9e37-96bff32a0d4bDanieldanielr@mail.comRodriguez8ba5f9a1-24e0-4706-bde1-823954ee584dJuanjuan@mail.comHernandezaf3bccd6-476e-4a01-9d60-ff15a89eaaefPedropedro@mail.comRamosfind_by_filter()Este metodo recibe como parametrosclass_name,query_dictdonde:class_namees el nombre de la clase que representa la tabla en base de datosquery_dictes la query que seleccionara los registrosUsa en la query el tipicoLIKE=%value%para la consultafrompostgresql_dbimportStandardQueryImplfromgeneric_utilsimportCleanDevGenericUtilsfrompostgresql_db.interfacesimportStandardQueryfrompostgresql_db.configsimportStandardSessionutils: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     |withStandardSession()assession: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 parametrosclass_name,query_dictdonde:class_namees el nombre de la clase que representa la tabla en base de datosquery_dictes la query que seleccionara los registrosUsa en la query el tipicoLIKE=%value%para la consultafrompostgresql_dbimportStandardQueryImplfromgeneric_utilsimportCleanDevGenericUtilsfrompostgresql_db.interfacesimportStandardQueryfrompostgresql_db.configsimportStandardSessionutils: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     |withStandardSession()assession: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 parametrosclass_name,query_dictdonde:class_namees el nombre de la clase que representa la tabla en base de datosquery_dictes la query que seleccionara los registrosRetorna un unico modelo por lo tanto lo mas aconsejable es usarlo con campos como claves primariasfrommodelsimportUserfrompostgresql_dbimportStandardQueryImplfromgeneric_utilsimportCleanDevGenericUtilsfrompostgresql_db.interfacesimportStandardQueryfrompostgresql_db.configsimportStandardSessionutils: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     |withStandardSession()assession: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 parametrosclass_name,query_dictdonde:class_namees el nombre de la clase que representa la tabla en base de datosquery_dictes la query que seleccionara los registrosRetorna un unico modelo pese a no ser un elemento unico en la base de datos, retorna la primera ocurrencia que cumpla
con dicho criteriofrommodelsimportUserfrompostgresql_dbimportStandardQueryImplfromgeneric_utilsimportCleanDevGenericUtilsfrompostgresql_db.interfacesimportStandardQueryfrompostgresql_db.configsimportStandardSessionutils: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     |withStandardSession()assession: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 parametrosclass_name,query_dictdonde:class_namees el nombre de la clase que representa la tabla en base de datosquery_dictes la query que seleccionara los registrosRetorna un unico modelo pese a no ser un elemento unico en la base de datos que cumpla con dicho criterio usandoUsa en la query el tipicoLIKE=%value%para la consultafrommodelsimportUserfrompostgresql_dbimportStandardQueryImplfromgeneric_utilsimportCleanDevGenericUtilsfrompostgresql_db.interfacesimportStandardQueryfrompostgresql_db.configsimportStandardSessionutils: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     |withStandardSession()assession: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 parametrosclass_name,query_dict,update_datadonde:class_namees el nombre de la clase que representa la tabla en base de datosquery_dictes la query que seleccionara los registros afectados por la modificaciónupdate_datalos registros que se van a actualizar para todos los registros selecionados por la busquedaActualiza los registros selecionados en la query y los actualiza usando el criterio pasado en `update_datafrommodelsimportUserfrompostgresql_dbimportStandardQueryImplfromgeneric_utilsimportCleanDevGenericUtilsfrompostgresql_db.interfacesimportStandardQueryfrompostgresql_db.configsimportStandardSessionutils: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     |withStandardSession()assession: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 parametrosclass_name,query_dict,update_datadonde:class_namees el nombre de la clase que representa la tabla en base de datosquery_dictes la query que seleccionara los registros afectados por la modificaciónupdate_datalos registros que se van a actualizar para todos los registros selecionados por la busquedaActualiza los registros selecionados en la query y los actualiza usando el criterio pasado enupdate_dataUsa en la query el tipicoLIKE=%value%para la consultanumber_rows()Este metodo recibe como parametrosclass_name,query_dictdonde:class_namees el nombre de la clase que representa la tabla en base de datosquery_dictes la query que seleccionara los registros a contarRetorna el numero de registro encontradosfrompostgresql_dbimportStandardQueryImplfromgeneric_utilsimportCleanDevGenericUtilsfrompostgresql_db.interfacesimportStandardQueryfrompostgresql_db.configsimportStandardSessionutils:CleanDevGenericUtils=CleanDevGenericUtils()if__name__=='__main__':withStandardSession()assession: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)# 1rows:int=standard_query.number_rows(class_name='User',query_dict={},)print(rows)# 4delete()Este metodo recibe como parametrosclass_name,query_dictdonde:class_namees el nombre de la clase que representa la tabla en base de datosquery_dictes la query que seleccionara los registros a contarElimina todos los registros seleccionados en la consultafrompostgresql_dbimportStandardQueryImplfromgeneric_utilsimportCleanDevGenericUtilsfrompostgresql_db.interfacesimportStandardQueryfrompostgresql_db.configsimportStandardSessionutils:CleanDevGenericUtils=CleanDevGenericUtils()if__name__=='__main__':withStandardSession()assession: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 parametrosclass_name,query_dictdonde:class_namees el nombre de la clase que representa la tabla en base de datosquery_dictes la query que seleccionara los registros a contarElimina todos los registros seleccionados en la consultaUsa en la query el tipicoLIKE=%value%para la consultafrompostgresql_dbimportStandardQueryImplfromgeneric_utilsimportCleanDevGenericUtilsfrompostgresql_db.interfacesimportStandardQueryfrompostgresql_db.configsimportStandardSessionutils:CleanDevGenericUtils=CleanDevGenericUtils()if__name__=='__main__':withStandardSession()assession: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     |AdvanceQueryfind_all()Este metodo recibe como parametrosclass_name,query_dictdonde:class_namees el nombre de la clase que representa la tabla en base de datospageel numero de pagina a consultarrow_for_pagenumero de registros que retorna para esa paginaBusca todos los registro de una tabla y los pagina segun se le indiquefrompostgresql_dbimportAdvanceQuerysImplfromgeneric_utilsimportCleanDevGenericUtilsfrompostgresql_db.interfacesimportAdvanceQueryfrompostgresql_db.configsimportStandardSessionutils:CleanDevGenericUtils=CleanDevGenericUtils()if__name__=='__main__':withStandardSession()assession: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 parametrosclass_name,query_dictdonde:class_namees el nombre de la clase que representa la tabla en base de datosquery_dictes la query que seleccionara los registros a contarpageel numero de pagina a consultarrow_for_pagenumero de registros que retorna para esa paginafrompostgresql_dbimportAdvanceQuerysImplfromgeneric_utilsimportCleanDevGenericUtilsfrompostgresql_db.interfacesimportAdvanceQueryfrompostgresql_db.configsimportStandardSessionutils:CleanDevGenericUtils=CleanDevGenericUtils()if__name__=='__main__':withStandardSession()assession: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 indiquefind_by_filter_like()Este metodo recibe como parametrosclass_name,query_dictdonde:class_namees el nombre de la clase que representa la tabla en base de datosquery_dictes la query que seleccionara los registros a contarpageel numero de pagina a consultarrow_for_pagenumero de registros que retorna para esa paginaBusca los registro segun de una tabla segun criterio elegido y los pagina segun se le indiqueUsa en la query el tipicoLIKE=%value%para la consultafrompostgresql_dbimportAdvanceQuerysImplfromgeneric_utilsimportCleanDevGenericUtilsfrompostgresql_db.interfacesimportAdvanceQueryfrompostgresql_db.configsimportStandardSessionutils:CleanDevGenericUtils=CleanDevGenericUtils()if__name__=='__main__':withStandardSession()assession: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 parametrosclass_name,query_dictdonde:class_namees el nombre de la clase que representa la tabla en base de datosquery_dictes la query que seleccionara los registros a contarorder_typeelige el tipo de orden ascendente o descendenteorder_columcolumna por la cual desea ordenarpageel numero de pagina a consultarrow_for_pagenumero de registros que retorna para esa paginaBusca los registro segun de una tabla segun criterio elegido, los pagina y lo ordena por la columna indicadafrompostgresql_dbimportAdvanceQuerysImplfromgeneric_utilsimportCleanDevGenericUtilsfrompostgresql_db.interfacesimportAdvanceQueryfrompostgresql_db.configsimportStandardSessionutils:CleanDevGenericUtils=CleanDevGenericUtils()if__name__=='__main__':withStandardSession()assession: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 parametrosclass_name,query_dictdonde:class_namees el nombre de la clase que representa la tabla en base de datosquery_dictes la query que seleccionara los registros a contarorder_typeelige el tipo de orden ascendente o descendenteorder_columcolumna por la cual desea ordenarpageel numero de pagina a consultarrow_for_pagenumero de registros que retorna para esa paginaBusca los registro segun de una tabla segun criterio elegido, los pagina y lo ordena por la columna indicadaUsa en la query el tipicoLIKE=%value%para la consultafrompostgresql_dbimportAdvanceQuerysImplfromgeneric_utilsimportCleanDevGenericUtilsfrompostgresql_db.interfacesimportAdvanceQueryfrompostgresql_db.configsimportStandardSessionutils:CleanDevGenericUtils=CleanDevGenericUtils()if__name__=='__main__':withStandardSession()assession: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 |