On Sep 10, 2010, at 3:14 AM, Ernst wrote:
> Hi,
> I have manged to set up joined and single table inheritance mappings.
> When relationships get involved I need help.
>
> I would like to use the state pattern. Class Applicant delegates to a
> subclass of State.
>
> applicant_table = Table('applicant', metadata,
> Column('applicant_id',Integer, primary_key=True),
> Column('_state', Integer, ForeignKey('applicantstate.state_id')),
> )
>
>
> appstate_table = Table('applicantstate', metadata,
> Column('state_id',Integer, primary_key=True),
> Column('type', String(30),nullable=False),
> Column('_givenName', String(40))
> )
>
> # applicant - state relationship, one to one, SQLAlchemy-0.5.8-
> #mapper(Applicant, applicant_table, properties={
> # 'applicantstate':relation(State, uselist=False,
> backref='applicant')
> #})
>
> mapper(Applicant, applicant_table, properties={
> 'applicantstate':relation(State, backref=backref('applicant',
> uselist=False))
> })
>
> I tried both relationships and get:
> ProgrammingError: (ProgrammingError) can't adapt '
> INSERT INTO applicant (applicant_id, _state)
> VALUES (%(applicant_id)s, %(_state)s)'
> {'_state': <tg21tut.model.Applicant2.NewStdApp object at 0x9034bec>,
> 'applicant_id': 1L}
>
> I have omitted the single table inheritance mappings.
The relationship is valid. The error there arises from some inappropriate
manipulation of objects, such as setting applicant._state =
SomeApplicantState(), instead of assigning to the "applicantstate" attribute.
Full detail would be needed in order to determine the issue.
--
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.