Thanks for this....

I tried your method, but I think you can't dynamically create classes that way.  I had some success with this:

table_classes = []
i = 0
for table in tables:
    print i, "-", table[0]
    y = new.classobj('sqlmeta', (), {'table': table[0], 'fromDatabase': True})
    x = new.classobj(str(table[0]),(SQLObject,), {'sqlmeta': y})
    for z in x.sqlmeta.asDict():
        print z
    i += 1
But it's still not completely right....I get this error:
Traceback (most recent call last):
  File "samdump.py", line 32, in <module>
    for z in x.sqlmeta.asDict():
TypeError: unbound method asDict() must be called with sqlmeta instance as first argument (got nothing instead)

Anyone know what I'm doing wrong?  I sort of guessed at how to do it...if you can't tell.  :)


On Sun, Apr 13, 2008 at 12:27 PM, Oleg Broytmann <phd@phd.pp.ru> wrote:
On Sat, Apr 12, 2008 at 07:31:07PM -0300, Sam's Lists wrote:
> So you've given me step one and it works well.  Thank you.
> tables = connection.queryAll('show tables')
> for table in tables:
>     print "\t", table[0]
> Now I know step three is something like this:
>         recdict = record.sqlmeta.asDict()
> But I can't figure out how to go from step one to step three.  Given the
> table name as a string, how do I convert it to an object where sqlobject
> goes and creates an object based on the info in the database?

  Something like this:

tableClasses = {}
for table in tables:
   tname = table[0]
   class Table(SQLObject):
       class sqlmeta:
           table = tname
           fromDatabase = True
   tableClasses[tname] = Table

    Oleg Broytmann            http://phd.pp.ru/            phd@phd.pp.ru
          Programmers don't die, they just GOSUB without RETURN.

This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
Don't miss this year's exciting event. There's still time to save $100.
Use priority code J8TL2D2.
sqlobject-discuss mailing list