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