On Sun, Sep 06, 2009 at 09:54:43AM +0200, Tobias Weber wrote: > class A(InheritableSQLObject): > def _init(self, *args, **kargs): > InheritableSQLObject._init(self, *args, **kargs) > print self.__class__ > if 'name' in dir(self): > # This should never fail > print getattr(self, 'name') > > class B(A): > name = sqlobject.StringCol() > > class C(B): > pass > > sqlobject.sqlhub.processConnection = > sqlobject.connectionForURI('sqlite:/tmp/x') > > for klass in (A, B, C): > klass.createTable(ifNotExists = True)
Works for me: print list(B.select()) C(name = 'X') print list(B.select()) prints 1/QueryOne: SELECT tbl_name FROM sqlite_master WHERE type='table' AND tbl_name = 'a' 1/QueryR : SELECT tbl_name FROM sqlite_master WHERE type='table' AND tbl_name = 'a' 2/Query : CREATE TABLE a ( id INTEGER PRIMARY KEY, child_name VARCHAR (255) ) 2/QueryR : CREATE TABLE a ( id INTEGER PRIMARY KEY, child_name VARCHAR (255) ) 3/QueryOne: SELECT tbl_name FROM sqlite_master WHERE type='table' AND tbl_name = 'b' 3/QueryR : SELECT tbl_name FROM sqlite_master WHERE type='table' AND tbl_name = 'b' 4/Query : CREATE TABLE b ( id INTEGER PRIMARY KEY, name TEXT, child_name VARCHAR (255) ) 4/QueryR : CREATE TABLE b ( id INTEGER PRIMARY KEY, name TEXT, child_name VARCHAR (255) ) 5/QueryOne: SELECT tbl_name FROM sqlite_master WHERE type='table' AND tbl_name = 'c' 5/QueryR : SELECT tbl_name FROM sqlite_master WHERE type='table' AND tbl_name = 'c' 6/Query : CREATE TABLE c ( id INTEGER PRIMARY KEY, child_name VARCHAR (255) ) 6/QueryR : CREATE TABLE c ( id INTEGER PRIMARY KEY, child_name VARCHAR (255) ) 7/Select : SELECT a.id, a.child_name FROM a WHERE ((a.child_name) = ('B')) 7/QueryR : SELECT a.id, a.child_name FROM a WHERE ((a.child_name) = ('B')) [] 8/QueryIns: INSERT INTO a (child_name) VALUES ('B') 8/QueryR : INSERT INTO a (child_name) VALUES ('B') 9/QueryOne: SELECT child_name FROM a WHERE ((a.id) = (1)) 9/QueryR : SELECT child_name FROM a WHERE ((a.id) = (1)) <class '__main__.A'> 10/QueryIns: INSERT INTO b (id, name, child_name) VALUES (1, 'X', 'C') 10/QueryR : INSERT INTO b (id, name, child_name) VALUES (1, 'X', 'C') 11/QueryOne: SELECT name, child_name FROM b WHERE ((b.id) = (1)) 11/QueryR : SELECT name, child_name FROM b WHERE ((b.id) = (1)) <class '__main__.B'> X 12/QueryIns: INSERT INTO c (id, child_name) VALUES (1, NULL) 12/QueryR : INSERT INTO c (id, child_name) VALUES (1, NULL) 13/QueryOne: SELECT child_name FROM c WHERE ((c.id) = (1)) 13/QueryR : SELECT child_name FROM c WHERE ((c.id) = (1)) <class '__main__.C'> X 14/Select : SELECT a.id, a.child_name FROM a WHERE ((a.child_name) = ('B')) 14/QueryR : SELECT a.id, a.child_name FROM a WHERE ((a.child_name) = ('B')) 14/Select children of the class B: SELECT b.id, b.name, b.child_name FROM b WHERE ((b.id) = (1)) 14/QueryR : SELECT b.id, b.name, b.child_name FROM b WHERE ((b.id) = (1)) [<C 1 name='X'>] No exception. Oleg. -- Oleg Broytmann http://phd.pp.ru/ p...@phd.pp.ru Programmers don't die, they just GOSUB without RETURN. ------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july _______________________________________________ sqlobject-discuss mailing list sqlobject-discuss@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/sqlobject-discuss