On Oct 25, 2010, at 4:59 PM, Alvaro Reinoso wrote:

> I think it should be another problem because I have a file where I
> initialize all the tables, so that file contains all the tables. The
> tables are created properly, but when I try to create a Screen object
> (the main class, Screen -> CRM -> CRMContactInformation), I get this
> error:

looks like you are passing a Table object, or the name of one, where a mapped 
class is expected.   this would be the cause of that:

 contactInformation = relationship("crm_contact_informations", uselist=False, 
backref="crms")

"CRMContactInformation"


> 
> UnmappedClassError: Class 'Table('crm_contact_informations',
> MetaData(None), Column('id', Integer(), ForeignKey('crms.id'),
> table=<crm_contact_informations>, primary_key=True, nullable=False),
> Column('owner', String(length=50, convert_unicode=False,
> assert_unicode=None, unicode_error=None, _warn_on_bytestring=False),
> table=<crm_contact_informations>), Column('owner_phone',
> String(length=20, convert_unicode=False, assert_unicode=None,
> unicode_error=None, _warn_on_bytestring=False),
> table=<crm_contact_informations>), Column('owner_email',
> String(length=50, convert_unicode=False, assert_unicode=None,
> unicode_error=None, _warn_on_bytestring=False),
> table=<crm_contact_informations>), Column('store_manager',
> String(length=50, convert_unicode=False, assert_unicode=None,
> unicode_error=None, _warn_on_bytestring=False),
> table=<crm_contact_informations>), Column('store_phone',
> String(length=20, convert_unicode=False, assert_unicode=None,
> unicode_error=None, _warn_on_bytestring=False),
> table=<crm_contact_informations>), Column('store_email',
> String(length=50, convert_unicode=False, assert_unicode=None,
> unicode_error=None, _warn_on_bytestring=False),
> table=<crm_contact_informations>), Column('it_manager',
> String(length=50, convert_unicode=False, assert_unicode=None,
> unicode_error=None, _warn_on_bytestring=False),
> table=<crm_contact_informations>), Column('it_manager_phone',
> String(length=20, convert_unicode=False, assert_unicode=None,
> unicode_error=None, _warn_on_bytestring=False),
> table=<crm_contact_informations>), Column('it_manager_email',
> String(length=50, convert_unicode=False, assert_unicode=None,
> unicode_error=None, _warn_on_bytestring=False),
> table=<crm_contact_informations>), schema=None)' is not mapped
> 
> On Oct 25, 3:58 pm, Michael Bayer <[email protected]> wrote:
>> all modules which include mapped classes must be imported before you attempt 
>> to initialize the mappings.  If class A references "B", but "class B" 
>> doesn't exist, you get errors like that, so importing the modules that 
>> contain both class A and B solves the issue.
>> 
>> On Oct 25, 2010, at 2:55 PM, Alvaro Reinoso wrote:
>> 
>>> Hello,
>> 
>>> I get errors when I try to create tables one to one relation. Screen
>>> contains crm and crm contains more classes. The relation is one to one
>>> between crm, so I want to use the screen id as primary key in crm. And
>>> the relation is one to one between crm and some classes, I just added
>>> one class as example, so children of crm must contain a screen id as a
>>> primary key. When I try to make the last relation, it's when it
>>> breaks. I tried to use both, crm id and screen id.
>> 
>>> I didn't work. I get errors such as, "UnmappedClassError" when I try
>>> to use crm id in ContactInformation, and "Could not determine join
>>> condition between parent/child tables on relationship
>>> CRM.contactInformation. Specify a 'primaryjoin' expression. If this is
>>> a many-to-many relationship, 'secondaryjoin' is needed as well" when I
>>> try to use screen id in ContactInformation.
>> 
>>> These are my classes:
>> 
>>> class Screen(rdb.Model):
>>>        """Set up screens table in the database"""
>>>        rdb.metadata(metadata)
>>>        rdb.tablename("screens")
>> 
>>>        id = Column("id", Integer, primary_key=True)
>>>        title = Column("title", String(100))
>>>        ....
>> 
>>>        crm = relationship("CRM", uselist=False, backref="screens")
>> 
>>> class CRM(rdb.Model):
>>>    """Set up crm table in the database"""
>>>    rdb.metadata(metadata)
>>>    rdb.tablename("crms")
>> 
>>>    id = Column("id", Integer, ForeignKey("screens.id"),
>>> primary_key=True)
>> 
>>>    contactInformation = relationship("crm_contact_informations",
>>> uselist=False, backref="crms")
>>>        ....
>> 
>>> class CRMContactInformation(rdb.Model):
>>>    """Set up crm contact information table in the database"""
>>>    rdb.metadata(metadata)
>>>    rdb.tablename("crm_contact_informations")
>> 
>>>    id = Column("id", Integer, ForeignKey("screens.id"),
>>> primary_key=True)
>>>    owner = Column("owner", String(50))
>>>       ...
>> 
>>> --
>>> 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 
>>> athttp://groups.google.com/group/sqlalchemy?hl=en.
> 
> -- 
> 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.
> 

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

Reply via email to