[orm-devel] No such attribute or function 'oid'
Mike Watkins
orm-devel@mailman.tux4web.de
Tue, 14 Jan 2003 09:47:39 -0800
Yes, you can... a little trick - add "oid" into your select statement. Its
a hidden column in each table.
For example the view:
create view v_published_docs as
select d.oid, d.id, d.references_id, d.title, d.abstract,
d.content_type_id, d.lang_id, d.author_id, d.create_date,
d.modified_date,
d.publish_date, d.expiry_date, d.is_syndicated from document d
where references_id is null and d.status = 1 and d.publish_date <= now();
Supports this object:
class DocumentList(dbclass):
tableName='v_published_docs'
columns = {
"id" : serial() ,
# "references_id" : # since it references itself, has to
be defined after class is defined, see below
"title" : varchar() ,
"abstract" : text() ,
"content_type_id" : one2one(ContentType) ,
"lang_id" : one2one(Lang) ,
"author_id" : one2one(Person) ,
"create_date" : timestamp() ,
"modified_date" : timestamp() ,
"publish_date" : timestamp() ,
"expiry_date" : timestamp() ,
"is_syndicated" : boolean()
}
At 10:43 PM 1/12/2003 -0800, you wrote:
>Diedrich,
>I guess that I can't work with PostgreSQL views as orm objects because
>views don't have oid's(?). It seems orm is reliant on oid (at least for
>PostgreSQL). It might be nice to be able to specify the primary key in
>when creating the dbclass subclass and having it us the pk instead of the
>oid. Just a thought.
>
>Best regards,
>
>Eric.
>
>--
>_________________________
>
>Eric Walstad
>222 Winfield Street
>San Francisco, CA 94110
>415-643-0812 voice & fax
>eric@ericwalstad.com
>_________________________
>
>
>
>
>funds = self.ds.selectByClauses(funding_summary, where="fsid = %d" %
>self.invoice.id).fetchall()
>
>============================================================
>SELECT funding_summary.oid,
>funding_summary.time_start,funding_summary.name,funding_summary.funding_limit,funding_summary.days_remain,funding_summary.time_end,funding_summary.fsid,funding_summary.amt_remain
>FROM funding_summary WHERE fsid = 318
>============================================================
>Traceback (most recent call last):
> File "ewwork.py", line 514, in OnLinkToFundingSources
> funds = self.ds.selectByClauses(funding_summary, where="fsid = %d" %
> self.invoice.id).fetchall()
> File "/usr/lib/python2.2/site-packages/orm/datasource.py", line 302, in
> selectByClauses
> return self.runSelect(dbclass, query)
> File
> "/usr/lib/python2.2/site-packages/orm/adapters/pgsql/datasource.py", line
> 286, in runSelect
> return orm.datasource.datasource_base.runSelect(self, dbclass, query)
> File "/usr/lib/python2.2/site-packages/orm/datasource.py", line 331, in
> runSelect
> cursor = self.execute(query)
> File
> "/usr/lib/python2.2/site-packages/orm/adapters/pgsql/datasource.py", line
> 376, in execute
> cursor.execute(query)
>psycopg.ProgrammingError: ERROR: No such attribute or function 'oid'
>
>Eric Walstad wrote:
>>Diedrich,
>>I forgot to mention that I have a PostgreSQL view with an "interval" data
>>type:
>> View "funding_summary"
>> Column | Type | Modifiers
>>---------------+-----------------------------+-----------
>> fsid | integer |
>>...
>> days_remain | interval |
>>Notice that days_remain is of type interval, which when rendered looks like:
>>SELECT days_remain FROM funding_summary LIMIT 1;
>> days_remain
>>-------------
>> 213 days
>>(1 row)
>>I'm just starting to play around with this view, but I'm assuming that I
>>should have a dbclass definition like this:
>># Views
>>class funding_summary(dbclass):
>> columns = {"fsid" :integer(),
>> ...
>> "days_remain" :varchar()}
>>That is, that the "interval" type should be a "varchar" orm column. Is
>>it reasonable to request you add an alias for interval types?
>>Thanks,
>>Eric.
>
>_______________________________________________
>orm-devel mailing list
>orm-devel@mailman.tux4web.de
>http://mailman.tux4web.de/mailman/listinfo/orm-devel