Tengo un problema que no pasa en ot6ros lenguajes con consultas sobre el 
motor.
el entorno es: Python con Tryton y motor PostgreSQL
la consulta la hago en una pantalla con salida a un informe:

class InvoicesRangeReport(Report):
    __name__ = 'invoices_range_report'

    @classmethod
    def parse(cls, report, objects, data, localcontext):

        consulta1() 
        consulta2()
        consulta3()

    def consulta1():
        cursor = Transaction().cursor
        cursor.execute("DROP TABLE mivista3")

        def consulta2():
            query = """CREATE TABLE mivista3 AS
                SELECT a.number AS factu,a.invoice_date,e.name AS osoc, 
                e.alias AS descrip,d.product,d.servicio, 0000 AS cant,
                d.monto AS valor,d.id,d.invoice_line,000000 AS total,
                000000 AS totfc,d.prefactura
                FROM account_invoice a 
                INNER JOIN alpi_prefactura c ON a.id=c.invoice  
                INNER JOIN alpi_prefactura_line d ON c.id=d.prefactura 
                INNER JOIN party_party e ON a.party=e.id 
                WHERE invoice_date >= '%s' AND invoice_date >= '%s' AND 
d.invoice_line >0
                ORDER BY product,monto"""% (str(data['desde']), 
str(data['hasta']))
            cursor = Transaction().cursor
            cursor.execute(query)

        def consulta3():
            query = """SELECT factu, invoice_date AS fecha, osoc, descrip,
                servicio,COUNT(product) AS canti,valor,COUNT(product)*valor 
AS totfc,
                    product
                FROM mivista3
                GROUP BY factu,invoice_date,osoc,descrip,
                    servicio,valor,product
                ORDER BY product""" 
            cursor = Transaction().cursor
            cursor.execute(query)

        lista = cursor.fetchone()

        localcontext['account_invoices'] = lista
        return super(InvoicesRangeReport, cls).parse(report, objects,
            data, localcontext)

por lo que se ve la sintaxis esta correcta, pero no puede crear una tabla, 
para mi es inexplicable
deberia haber una manera de generar un cursor, cosa que no encuentro en 
Postgresql.
QUE ME RECOMIENDAN.. GRACIAS

eduardo martinez

Responder a