On 04/03/2011 2:00 PM, Oleg Broytman wrote:
On Fri, Mar 04, 2011 at 12:49:50PM +0000, Timothy W. Grove wrote:
It seems to me that there should be a simple way to add the attribute to
the class if the column has been added already, or not if it has been
added through updating
There is no a simple way. You have to create the table class without
the column, and then look into the database to determine if the column
is there. You can use the same mechanism SQLObject uses to implement
fromDatabase: connection.columnsFromSchema(tableName, soClass); the
result is a list of SOCol instances.
Thanks for the advice, Oleg. I found a solution which may not be
elegant, but it works for me! Instead of trying to work with two
different class definitions I've just kept one which declares the column
I wish to add to the database and run an update function which deletes
the column from the class before adding it again to both the class and
the database. My example follows.
Best regards,
Tim
class SignEntry(SQLObject):
explanatory_map = PickleCol()
def SignEntryUpdate():
cols = [i.name for i in
sqlhub.processConnection.columnsFromSchema("sign_entry", SignEntry)]
if 'explanatoryMap' not in cols:
SignEntry.sqlmeta.delColumn('explanatory_map') # I know
this exists in the class definition
SignEntry.sqlmeta.addColumn(PickleCol("explanatory_map"),
changeSchema=True)
------------------------------------------------------------------------------
What You Don't Know About Data Connectivity CAN Hurt You
This paper provides an overview of data connectivity, details
its effect on application quality, and explores various alternative
solutions. http://p.sf.net/sfu/progress-d2d
_______________________________________________
sqlobject-discuss mailing list
sqlobject-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sqlobject-discuss