On May 17, 2008, at 10:53 AM, Eric Abrahamsen wrote:

>
> Hi there,
>
> I'm new to this, so please be patient if I'm a little slow... I'm
> trying to filter Article objects by a datetime field ('pubdate'), and
> expected that I would be able to do something like this:
>
> arts = sess.query(Article).filter(and_(Article.pubdate.year==year,
> Article.pubdate.month==month, Article.id==id)).one()
>
> This gives me:
> AttributeError: 'InstrumentedAttribute' object has no attribute 'year'
>
> Apparently methods on attributes are reserved for sqlalchemy
> internals, and I'm not working with a straight Python object, as I'd
> thought. That makes sense, but can anyone suggest a simple substitute
> for what I'm trying to do here?

two approaches here:

1. use datepart functions.  currently these are specific to individual  
databases (heres the postgres version):

filter(func.date_part("year", Class.somedate)==year)

2. use comparison/BETWEEN; this has the advantage in that if the  
column has an index on it, it can be used:

filter(Class.somedate.between(date(year, 1, 1), date(year + 1, 1, 1)))



--~--~---------~--~----~------------~-------~--~----~
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 [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to