Re: [SQLObject] _fromDatabase + configurable database connections
SQLObject is a Python ORM.
Brought to you by:
ianbicking,
phd
From: Kevin D. <da...@gm...> - 2005-07-20 13:10:01
|
On 7/20/05, Jennings Jared L Contr 46 SK/CCI <jar...@eg...> wrote: > kevin dangoor said:=20 > > jared jennings said:=20 > > > class User(SQLObject):=20 > > > _fromDatabase =3D True=20 > > > #...=20 > > > User._connection =3D myConnection=20 > > > User.addColumnsFromDatabase()=20 > > > u =3D User.get(17)=20 > > > print u.shortName=20 > >=20 > > Does this work as written? Or do you get an error by=20 > > specifying _fromDatabase=3DTrue without providing a connection?=20 >=20 > No, there's an error. The __classinit__ calls addColumnsFromDatabase, whi= ch > fails without the _connection.=20 I guess it would be possible to add a flag that effectively says "I'll add the columns later" to help with this specific scenario. > I have an SQL script that sets up the database, so I didn't want to put t= he > field definitions in Python too. I couldn't create the tables using only > SQLObject, because (1) there are many people here for whom SQL is normal = and > Python is new, (2) there are permissions and views to set up.=20 Don't Repeat Yourself is a good motto. Actually, in the project I'm working on I have had to do some database-specific calls in the creation process (which is written in Python). What I did was access the low-level connection object (ie not SQLObject's connection object, but the one SQLObject is holding on to) to do the low-level stuff, and then I'd loop through the modules' __dicts__ to find SQLObject classes and create those tables in the database using SQLObject. > I could give up and put the column definitions in the class; this seems t= o > be more idiomatic to SQLObject, at least in my type of application.=20 Depending on how frequently you change your schema, that could be a real drag. Personally, I would either do the database initialization in a Python script (as above) or think about making addColumnsFromDatabase work as you have pictured above. Kevin |