it cannot find Member class. do u have two or more declarative_bases? u should have just one. and i would put all these as direct class references instead of "strings".
On Wednesday 04 February 2009 19:02:49 Gloria W wrote: > Thanks for this response. I do need all of the data available at > once. > > Specifically, here is what I'm trying to do. I'm following this > > example right from the docs: > >>> from sqlalchemy import ForeignKey > >>> from sqlalchemy.orm import relation, backref > >>> class Address(Base): > > ... __tablename__ = 'addresses' > ... id = Column(Integer, primary_key=True) > ... email_address = Column(String, nullable=False) > ... user_id = Column(Integer, ForeignKey('users.id')) > ... > ... user = relation(User, backref=backref('addresses', > order_by=id)) > ... > ... def __init__(self, email_address): > ... self.email_address = email_address > ... > ... def __repr__(self): > ... return "<Address('%s')>" % self.email_address > > > > > > Just dealing with two foreign key tables for now, I have foreign > keys into Members, and Gender in this MemberProfiles class. I > inherit from the declarative_base, as shown: > > > > import sys > import pprint > from sqlalchemy import * > from sqlalchemy.ext.declarative import declarative_base > from sqlalchemy.orm import * > > sys.path.append('../config') > import config > > from Members import * > from Gender import * > > Base = declarative_base() > > class MemberProfile(Base): > __tablename__ = 'member_profiles' > > memberID = Column(Integer, ForeignKey('members.memberID'), > primary_key=True) > SSN = Column(String) > DOB = Column(Date) > industryID = Column(Integer) > primarysectorID = Column(Integer) > address1 = Column(String) > address2 = Column(String) > city = Column(String) > state = Column(String) > zip = Column(String) > howhearID = Column(Integer) > affiliationID = Column(Integer) > incomeID = Column(Integer) > worksituationID = Column(Integer) > currentinsuranceID = Column(Integer) > genderID = Column(Integer,ForeignKey('member_gender.genderID')) > referemail = Column(String) > occupation = Column(String) > phonehome = Column(String) > phonework = Column(String) > phonecell = Column(String) > phonefax = Column(String) > occupationID = Column(Integer) > occupationother = Column(String) > billing_address1 = Column(String) > billing_address2 = Column(String) > billing_city = Column(String) > billing_state = Column(String) > billing_zip = Column(String) > member = relation("Member",lazy=False,backref=backref > ('members',order_by=memberID),cascade="all, delete") > > gender = relation("Gender",lazy=False,backref=backref > ('member_profiles'),order_by=genderID) > > > def __init__(self, memberID, ... > > def __repr__(self): > return "<MemberProfile('%s','%s',... > > > > I try to run this in the unit test: > > if __name__ == "__main__": > member_profile_table = MemberProfile.__table__ > metdata = Base.metadata > engine = create_engine(config.db_conn) > Session = sessionmaker(bind=engine) > session = Session() > > memberProfile = session.query(MemberProfile).filter_by > (memberID=81017).first() > print "\nOriginal record:" > print memberProfile.__dict__ > > memberProfile.phonework="1111111111" > memberProfile.question="who?" > session.commit() > > > I get this error: > > debian-etch:/var/www/ReST/models# python MemberProfiles.py > Traceback (most recent call last): > File "MemberProfiles.py", line 108, in ? > memberProfile = session.query(MemberProfile).filter_by > (memberID=81017).first() > File > "/usr/lib/python2.4/site-packages/SQLAlchemy-0.5.0rc4-py2.4.egg/ > sqlalchemy/orm/session.py", line 908, in query > return self._query_cls(entities, self, **kwargs) > File > "/usr/lib/python2.4/site-packages/SQLAlchemy-0.5.0rc4-py2.4.egg/ > sqlalchemy/orm/query.py", line 95, in __init__ > self.__setup_aliasizers(self._entities) > File > "/usr/lib/python2.4/site-packages/SQLAlchemy-0.5.0rc4-py2.4.egg/ > sqlalchemy/orm/query.py", line 109, in __setup_aliasizers > mapper, selectable, is_aliased_class = _entity_info(entity) > File > "/usr/lib/python2.4/site-packages/SQLAlchemy-0.5.0rc4-py2.4.egg/ > sqlalchemy/orm/util.py", line 466, in _entity_info > mapper = class_mapper(entity, compile) > File > "/usr/lib/python2.4/site-packages/SQLAlchemy-0.5.0rc4-py2.4.egg/ > sqlalchemy/orm/util.py", line 543, in class_mapper > mapper = mapper.compile() > File > "/usr/lib/python2.4/site-packages/SQLAlchemy-0.5.0rc4-py2.4.egg/ > sqlalchemy/orm/mapper.py", line 679, in compile > mapper._post_configure_properties() > File > "/usr/lib/python2.4/site-packages/SQLAlchemy-0.5.0rc4-py2.4.egg/ > sqlalchemy/orm/mapper.py", line 701, in _post_configure_properties > prop.init(key, self) > File > "/usr/lib/python2.4/site-packages/SQLAlchemy-0.5.0rc4-py2.4.egg/ > sqlalchemy/orm/interfaces.py", line 404, in init > self.do_init() > File > "/usr/lib/python2.4/site-packages/SQLAlchemy-0.5.0rc4-py2.4.egg/ > sqlalchemy/orm/properties.py", line 574, in do_init > self._determine_targets() > File > "/usr/lib/python2.4/site-packages/SQLAlchemy-0.5.0rc4-py2.4.egg/ > sqlalchemy/orm/properties.py", line 588, in _determine_targets > self.mapper = mapper.class_mapper(self.argument(), compile=False) > File > "/usr/lib/python2.4/site-packages/SQLAlchemy-0.5.0rc4-py2.4.egg/ > sqlalchemy/ext/declarative.py", line 387, in return_cls > raise exceptions.InvalidRequestError( > sqlalchemy.exc.InvalidRequestError: When compiling mapper Mapper| > MemberProfile|member_profiles, expression 'Member' failed to locate > a name ("name 'Member' is not defined"). If this is a class name, > consider adding this relation() to the <class > '__main__.MemberProfile'> class after both dependent classes have > been defined. > > This same example works if I inherit from my Member class, but I > don't want to do this, since I have to also join Gender, and 40 > something other tables to this class. > > What am I missing to make this work like the example shown? > > Thank you immensely, > Gloria > > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---