[sqlalchemy] Using custom function expression throws 'TypeError: an integer is required' in orm query

2011-06-30 Thread Adrian
SQAlchemy 0.7.1 / pyscopg 2.2.1 / PostgreSQL 9.0
---

I have a weird problem with orm queries that contain custom functions,
in this case from postgres contrib modules. When I do a query like
this

session.query(Entity, func.similarity(Entity.string,
'querystring')).all() # postgres pg_trgm extension

I will get the error below. However, when I specify one or all the
columns of the Entity individually it works. It also works if the
function is in the .order_by() clause.

Any ideas where the problem could come from?

-

/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/query.pyc in
all(self)
   1675
   1676 
- 1677 return list(self)
   1678
   1679 @_generative(_no_clauseelement_condition)

/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/query.pyc in
instances(self, cursor, _Query__context)
   1916
   1917 if filter:
- 1918 rows = filter(rows)
   1919
   1920 if context.refresh_state and self._only_load_props
\

/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/
_collections.pyc in unique_list(seq, hashfunc)
594 if not hashfunc:
595 return [x for x in seq
-- 596 if x not in seen
597 and not seen.__setitem__(x, True)]
598 else:

TypeError: an integer is required

-- 
You received this message because you are subscribed to the Google Groups 
sqlalchemy group.
To post to this group, send email to sqlalchemy@googlegroups.com.
To unsubscribe from this group, send email to 
sqlalchemy+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en.



Re: [sqlalchemy] Using custom function expression throws 'TypeError: an integer is required' in orm query

2011-06-30 Thread Michael Bayer

On Jun 30, 2011, at 9:23 AM, Adrian wrote:

 SQAlchemy 0.7.1 / pyscopg 2.2.1 / PostgreSQL 9.0
 ---
 
 I have a weird problem with orm queries that contain custom functions,
 in this case from postgres contrib modules. When I do a query like
 this
 
 session.query(Entity, func.similarity(Entity.string,
 'querystring')).all() # postgres pg_trgm extension
 
 I will get the error below. However, when I specify one or all the
 columns of the Entity individually it works. It also works if the
 function is in the .order_by() clause.
 
 Any ideas where the problem could come from?

this seems like it has to do with the type of object being returned from 
psycopg2, as the Query runs the rows through a uniquing function that uses 
sets, maybe a comparison is emitting that TypeError.   The stack trace doesn't 
quite make it clear.   It would be interesting to see what 
session.execute(myquery.statement) sends back in the result rows.   (I haven't 
looked up the SIMILARITY function in the PG docs yet to see what it returns).



 
 -
 
 /usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/query.pyc in
 all(self)
   1675
   1676 
 - 1677 return list(self)
   1678
   1679 @_generative(_no_clauseelement_condition)
 
 /usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/query.pyc in
 instances(self, cursor, _Query__context)
   1916
   1917 if filter:
 - 1918 rows = filter(rows)
   1919
   1920 if context.refresh_state and self._only_load_props
 \
 
 /usr/local/lib/python2.7/dist-packages/sqlalchemy/util/
 _collections.pyc in unique_list(seq, hashfunc)
594 if not hashfunc:
595return [x for x in seq
 -- 596 if x not in seen
597 and not seen.__setitem__(x, True)]
598 else:
 
 TypeError: an integer is required
 
 -- 
 You received this message because you are subscribed to the Google Groups 
 sqlalchemy group.
 To post to this group, send email to sqlalchemy@googlegroups.com.
 To unsubscribe from this group, send email to 
 sqlalchemy+unsubscr...@googlegroups.com.
 For more options, visit this group at 
 http://groups.google.com/group/sqlalchemy?hl=en.
 

-- 
You received this message because you are subscribed to the Google Groups 
sqlalchemy group.
To post to this group, send email to sqlalchemy@googlegroups.com.
To unsubscribe from this group, send email to 
sqlalchemy+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en.