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 [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---