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