On Jun 29, 2012, at 8:21 AM, Barry Steyn wrote: > Hi All > > Firstly, I know that SA does not support Postgres Inheritance "out of the > box". But the concepts for concrete inheritance should allow some support, at > least for what I am trying to do. I am new to SA and Python (about a month of > experience here) and so I don't know if I am barking up the wrong tree. Here > is what I think... > > Each table has a unique "tableoid" column in Postgres. So lets assume this > table structure: > > CREATE TABLE A ( > id SERIAL Primary Key, > name text > ) > > CREATE TABLE B ( > id SERIAL Primary Key, > name text, > language text > ) INHERITS(A) > > Table B uses the postgres Inherits. Now lets assume that Postgres has given > table A an oid of 1, and table B an oid of 2. If I do... > SELECT A.tableoid, * FROM A > Then the rows that are from table B will have an oid of 2, while those from A > will have an oid of 1. So this mimics a polymorphism in a way and I can use > this OID as a discriminator. > > Here is my question (finally): How can I accomplish this in SA using concrete > inheritance and polymorphism. What I want is that when querying table A, a > polymorphic call will load up the class representing B in the appropriate > cases. Here follows EXACTLY what I am trying to do (and the code will follow > after): > There are three postgres tables in play: (1) A Users table, (2) An > Authentications table (3) A Password_Authentications table > Users has a foreignkey into Authorisations > Password_Authentications is inherited from Authentications
what we have for PG inheritance is here: http://www.sqlalchemy.org/trac/wiki/UsageRecipes/PostgreSQLInheritance as you'll see there, we're not using concrete inheritance, we're using "single table" inheritance. This because PG's INHERIT feature is designed to produce a single table interface that reads/writes distinct inheriting tables transparently. The recipe there is derived from PG's documentation on how the feature is intended to be used. -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to [email protected]. 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.
