Problema consulta a la BD

31 views
Skip to first unread message

emp2web

unread,
May 16, 2013, 12:04:55 PM5/16/13
to web2py-...@googlegroups.com
Saludos,

Me encuentro realizando un sistema de reportes el cual apenas tenga en una version medio estable la libero para todos pero en este momento tengo un pequeño problema.

Listo las tablas, al seleccionar una tabla listo los campo, selecciono el campo y se listan opciones de operadores (<,>,=) luego coloco el valor contra el cual voy a comparar, ejemplo

Tabla: auth_user
campo: email
operador: contains
valor= prueba

Esta seleccion generaria una regla asi:  db.auth_user.email.contains('prueba')

Puedo crear tantas reglas como quiera, luego las paso al controlador y me ejecuta generando reportes dinamicos.

el codigo del controlador es :

for dat in db(db.reglas.reporte == request.vars.id).select(db.reglas.regla):
            if pos>0:
                sql+= " & "
                pass
            sql += " ("+ dat.regla + ") "
            pos += 1
            pass

        prueba = db( (db.ventas.id>0) & eval(sql) ).select(db.ventas.id,db.clientes.id,db.vendedores.id,db.ventas.contrato,left=(
            db.productos.on(db.productos.id==db.ventas.equipo),
            db.clientes.on(db.clientes.id==db.ventas.cliente),
            db.vendedores.on(db.vendedores.id==db.ventas.vendedor),
            db.directores.on(db.directores.id==db.vendedores.director),
            db.gerentes.on(db.gerentes.id==db.directores.gerente),
            db.ciu.on(db.ciu.id==db.clientes.actividad_economica),
            db.punto_venta.on(db.punto_venta.id==db.vendedores.punto_venta),
            db.municipios.on(db.municipios.id==db.vendedores.municipio),
            db.departamentos.on(db.departamentos.id==db.municipios.departamento)
            ))

El problema radica en lo siguiente cuando lo envio asi como lo muestro, nunca me muestra informacion, se muere el servidor pero si lo envio con solo un count() sin el select y los left es rapido y me indica que son mas o menos 3 millones de registros.

alguna idea de como poder solucionar este problema.

Gracias de antemano a todos.

emp2web

unread,
May 22, 2013, 7:29:06 PM5/22/13
to web2py-...@googlegroups.com
Saludos,

Este problema lo solucione optimizando indices y particionando la tabla sin embargo seguia con el mismo problema y no me lo mostraba asi que lo que hice fue usar la instruccion _select y luego ejecuto el SQL puro, como es tanta informacion parece ser que el genera internamente tablas y demas y por eso se demora y se pega el proceso.

Espero le sirva a alguien.

samuel bonilla

unread,
May 22, 2013, 7:43:54 PM5/22/13
to web2py-...@googlegroups.com
+1


--
Has recibido este mensaje porque estás suscrito al grupo "web2py-usuarios" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a web2py-usuari...@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
 
 

Octaviano Cerna Alonso

unread,
May 23, 2013, 12:53:07 PM5/23/13
to web2py-...@googlegroups.com
+1


2013/5/22 samuel bonilla <pytho...@gmail.com>



--
Octaviano Cerna Alonso
Reply all
Reply to author
Forward
0 new messages