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
-~----------~----~----~----~------~----~------~--~---

Reply via email to