On 5/20/15 12:09 PM, Brian Cherinka wrote:
Hi,

I've built a postgresql function that takes as input a row from a table, and returns the sum of a particular column (of type array) between two specified indices. Here is how I've defined my function

    CREATE OR REPLACE FUNCTION specres_sum_segment(cube datadb.cube,
    index1 integer, index2 integer) RETURNS numeric
        LANGUAGE plpgsql STABLE
        AS $$

    DECLARE result numeric;
    BEGIN
    select sum(f) from unnest(cube.specres[index1:index2]) as f into
    result;
    return result;
    END; $$;

and here is how it works in psql.

    select c.pk from datadb.cube as c
    where(specres_sum_segment(c,2000,2005) < 12000);


This works and returns the cube entries where this condition is true. Now I'm trying to call this function with an SQLalchemy query. I've mapped a DeclarativeMeta class called Cube to my datadb.cube table, but when I try to run my session query I'm getting an error.

My sqlalchemy session query is

    
session.query(datadb.Cube).filter(func.specres_sum_segment(datadb.Cube,2000,2005)==
    12000).all()


but I get the error

    ProgrammingError: (psycopg2.ProgrammingError) can't adapt type
    'DeclarativeMeta'

sounds like your use of declarative is incorrect, please share the means by which the Cube class is declared as well as its base.





What is the right syntax to use when passing a mapped SQLalchemy class into a function so postgresql will understand it? I'm using SQLalchemy 1.0.0 and PostgreSQL 9.3. Any help would be appreciated. Thanks.

Cheers, Brian

--
You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+unsubscr...@googlegroups.com <mailto:sqlalchemy+unsubscr...@googlegroups.com>. To post to this group, send email to sqlalchemy@googlegroups.com <mailto:sqlalchemy@googlegroups.com>.
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to