Thread: [SQLObject] Some new problems with inheritance and connections. Patch attached
SQLObject is a Python ORM.
Brought to you by:
ianbicking,
phd
From: Evandro V. M. <ev...@as...> - 2005-08-03 23:34:13
Attachments:
connections_patch.diff
|
Hi !! I experimented again a new problem with connections and inheritance in SQLObject. There is also a patch attached which fix this problem but I'm not sure if it is the best approach. The script bellow explain the problem better: import datetime from sqlobject import * from sqlobject.inheritance import InheritableSQLObject from config import conn __connection__ = connectionForURI(conn) __connection__.autoCommit = False class SystemData(SQLObject): model_created = DateTimeCol(default=datetime.datetime.now()) class AbstractSellable(InheritableSQLObject): description = StringCol() sys_data = ForeignKey('SystemData') def _create(self, id, **kw): if 'sys_data' in kw: raise TypeError("Invalid argument 'sys_data'") kw['sys_data'] = SystemData(connection=self._connection) InheritableSQLObject._create(self, id, **kw) class Product(AbstractSellable): supplier_name = StringCol() t = __connection__.transaction() tables = [SystemData, AbstractSellable, Product] for table in tables: table.dropTable(ifExists=True, cascade=True, connection=t) table.createTable(connection=t) table.sqlmeta.cacheValues = True t.commit() def close(conn): conn._connection.close() # # Testing transactions with inheritance # assert Product.select().count() == 0 # XXX Bug comes here.We are not sending a proper connection when # creating an object of parent type. t2 = __connection__.transaction() Product(description='Bed', supplier_name='A company', connection=t2) t2.commit() assert Product.select().count() == 1 # # Testing closing transactions # # XXX I don't know how to check it throught SQLObject but the # connection process has gone after this command. close(t) close(t2) print 'done' # XXX Note that a exception is raised after finish this script. I still # don't know why. Thanks for any help. -- Evandro Vale Miquelito : ev...@as... Async Open Source - Brazil | http://www.async.com.br |
From: Oleg B. <ph...@ph...> - 2005-08-04 08:06:58
|
On Wed, Aug 03, 2005 at 08:33:59PM -0300, Evandro Vale Miquelito wrote: > - self._parent = parentClass(kw=parent_kw) > + self._parent = parentClass(kw=parent_kw, > + connection=self._connection) Applied and committed at revision 889. Thank you very much! Oleg. -- Oleg Broytmann http://phd.pp.ru/ ph...@ph... Programmers don't die, they just GOSUB without RETURN. |