Hi, OK - I ran into another thing that I do not understand about sqlalchemy. I am a newbie, so hopefully this will be straightforward.
There are two issues here: ISSUE1: I create a class called foo w/ a method called name(). I map a table that has a column called 'name' but use the column_prefix = '_' but I do not see _name get added to the class! But other labels, such as _phone which do not have a corresponding method name does get added. Here's the code: import sqlalchemy as sa from sqlalchemy import orm from sqlite3 import dbapi2 as sqlite class Foo(object): def __init__(self): self._myname = 'Bar' def name(self): return(self._myname) class FooStore: def __init__(self): self.metadata = sa.MetaData() # table to map class to self.t_foo = sa.Table('table_foo', self.metadata, sa.Column('id', sa.types.Integer, primary_key=True), sa.Column('name', sa.types.String(100)), sa.Column('phone', sa.types.String(100)) ) def map(self, myfoo): 'Creates the map. ' orm.mapper(Foo, self.t_foo, column_prefix = '_') # Add foo to the database print dir(myfoo) # where did _name go?, _phone is there! mf2 = Foo() # ok, let's create a new one. print dir(mf2) # same problem if __name__ == '__main__': f = Foo() fs = FooStore() fs.map(f) ISSUE2: I have an object that will be given to me that I want to store into a database. The class definition is located in a package. When I map this class to a table and set the attribute - I get an exception: AttributeError: 'NoneType' object has no attribute 'set' This can be seen by modifying the above example - where I put Foo into a package called 'foo': import sqlalchemy as sa from sqlalchemy import orm from sqlite3 import dbapi2 as sqlite import sys import foo.Foo as Foo class FooStore: def __init__(self): self.metadata = sa.MetaData() # table to map class to self.t_foo = sa.Table('table_foo', self.metadata, sa.Column('id', sa.types.Integer, primary_key=True), sa.Column('name', sa.types.String(100)), sa.Column('phone', sa.types.String(100)) ) def map(self, myfoo): 'Creates the map. te is the test engine' orm.mapper(Foo.Foo, self.t_foo, column_prefix = '_') # Add foo to the database try: myfoo._phone = '555-1212' # exception is thrown! except: #AttributeError: 'NoneType' object has no attribute 'set' print sys.exc_info() mf2 = Foo.Foo() # ok, let's create a new one. # AttributeError: 'Foo' object has no attribute '_sa_instance_state' myfoo._phone = '555-1212' # if __name__ == '__main__': orm.clear_mappers() f = Foo.Foo() fs = FooStore() fs.map(f) What's the right way to adapt this class to a table? Thanks! -Raj --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalchemy@googlegroups.com To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en -~----------~----~----~----~------~----~------~--~---