Thread: [SQLObject] Transaction and Foreign Key
SQLObject is a Python ORM.
Brought to you by:
ianbicking,
phd
From: Randall S. <ra...@tn...> - 2005-11-04 23:05:08
|
My classes do not define a default connection because I'm always working with transactions and would rather pass the connection in at initialization time. Say class ThingA contains foreign keys for class ThingB. thingb = ThingB.get(1, connection=trans) print thingb.thinga # Gives an error saying there is no connection defined. # I guess this is because ThingA has no default connection. thinga needs to be using the same transaction that thingb uses. So how can I set the connection for thinga without setting it for ThingA or is that the only way? Randall |
From: Kevin D. <da...@gm...> - 2005-11-05 03:30:18
|
I'm a big fan of the hub/descriptor model of connection handling. As long as the hub has a way of knowing which transaction object to use, you're in good shape. (In TurboGears, the hub has a begin() method that gets a transaction and starts using it. If you call hub.end(), it switches from the transaction back to a normal connection.) SQLObject's dbconnection.py has a hub near the end of the file that's easy to work from. Kevin On 11/4/05, Randall Smith <ra...@tn...> wrote: > My classes do not define a default connection because I'm always working > with transactions and would rather pass the connection in at > initialization time. Say class ThingA contains foreign keys for class > ThingB. > > thingb =3D ThingB.get(1, connection=3Dtrans) > print thingb.thinga > # Gives an error saying there is no connection defined. > # I guess this is because ThingA has no default connection. > > thinga needs to be using the same transaction that thingb uses. So how > can I set the connection for thinga without setting it for ThingA or is > that the only way? > > Randall > > > > ------------------------------------------------------- > SF.Net email is sponsored by: > Tame your development challenges with Apache's Geronimo App Server. Downl= oad > it for free - -and be entered to win a 42" plasma tv or your very own > Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php > _______________________________________________ > sqlobject-discuss mailing list > sql...@li... > https://lists.sourceforge.net/lists/listinfo/sqlobject-discuss > -- Kevin Dangoor Author of the Zesty News RSS newsreader email: ki...@bl... company: http://www.BlazingThings.com blog: http://www.BlueSkyOnMars.com |
From: Randall S. <ra...@tn...> - 2005-11-07 01:19:58
|
I've seen examples such as: # Example 1 hub = dbconnection.ConnectionHub() hub.threadConnection = connectionForURI('...') AND # Example 2 import sqlobject sqlobject.sqlhub.threadConnection = connectionForURI('...') It seems that in the second example, sqlobject.sqlhub is the same thing as hub in the first example (an instance of ConnectionHub). I don't know which one I should use. The first seems easier. Are they equivalent? Also, what's the significance of the threadConnection attribute? I seem to remember a sqlhub.processConnection method that is gone now. # Since I'm using transactions, would the following be O.K. ? import sqlobject con = connectionForURI('...') # Default - non transaction. sqlobject.sqlhub.threadConnection = con class Person(SQLObject): # seems that if hub is defined above, # the connection does not have to be defined here. # is this correct? fname = StringCol() mi = StringCol(length=1, default=None) lname = StringCol() # Set the transaction. sqlobject.sqlhub.threadConnection = con.transaction() # Would it work to say sqlobject.sqlhub.getConnection().transaction() ? p = Person.get(1) # Do some stuff. Then switch back to the regular connection. sqlobject.sqlhub.threadConnection = con # Obviously, I'm struggling to get a grasp on connections with SQLObject. I'm used to handling individual (real) connections, and the pooling, threading, weak-reference stuff is throwing me. I like to have a fair understanding of something before I use it, so please excuse me for asking so many questions. Thanks. Randall Kevin Dangoor wrote: > I'm a big fan of the hub/descriptor model of connection handling. As > long as the hub has a way of knowing which transaction object to use, > you're in good shape. > > (In TurboGears, the hub has a begin() method that gets a transaction > and starts using it. If you call hub.end(), it switches from the > transaction back to a normal connection.) > > SQLObject's dbconnection.py has a hub near the end of the file that's > easy to work from. > > Kevin > > On 11/4/05, Randall Smith <ra...@tn...> wrote: > >>My classes do not define a default connection because I'm always working >>with transactions and would rather pass the connection in at >>initialization time. Say class ThingA contains foreign keys for class >>ThingB. >> >>thingb = ThingB.get(1, connection=trans) >>print thingb.thinga >># Gives an error saying there is no connection defined. >># I guess this is because ThingA has no default connection. >> >>thinga needs to be using the same transaction that thingb uses. So how >>can I set the connection for thinga without setting it for ThingA or is >>that the only way? >> >>Randall >> >> >> >>------------------------------------------------------- >>SF.Net email is sponsored by: >>Tame your development challenges with Apache's Geronimo App Server. Download >>it for free - -and be entered to win a 42" plasma tv or your very own >>Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php >>_______________________________________________ >>sqlobject-discuss mailing list >>sql...@li... >>https://lists.sourceforge.net/lists/listinfo/sqlobject-discuss >> > > > > -- > Kevin Dangoor > Author of the Zesty News RSS newsreader > > email: ki...@bl... > company: http://www.BlazingThings.com > blog: http://www.BlueSkyOnMars.com > > > ------------------------------------------------------- > SF.Net email is sponsored by: > Tame your development challenges with Apache's Geronimo App Server. Download > it for free - -and be entered to win a 42" plasma tv or your very own > Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php |