When I delete[*1] a mapped object (a Title()) that is on the many side 
of a 1:m relationship (in sqlalchemy 0.8.0b2, Python 3.3), I get the 
following error when I do a session.commit():

  [...earlier part of traceback elided...]
  File "/usr/local/lib/python3.3/site-packages/sqlalchemy/orm/sync.py", 
line 53, in clear
    (r, orm_util.state_str(dest))
  AssertionError: Dependency rule tried to blank-out primary key column 
'title.work' on instance '<Title at 0xb5130d8c>'

The relationship is set up as: 
    class Work: pass
    class Title: pass
    t_work = meta.tables['work']
    sa.orm.mapper (Work,  t_work,
                   properties={'titles': sa.orm.relationship (Title), 
passive_deletes=True),
                   [...])
    sa.orm.mapper (Title,  meta.tables['title'])

The sqlalchemy "tables" are defined by calling 
sqlalchemy.MetaData().reflect()
and the db tables "work" and "title" are defined in postgresql:

    CREATE TABLE work (
    id SERIAL PRIMARY KEY,
        [...]
    CREATE TABLE title (
        work INT NOT NULL REFERENCES work(id) ON UPDATE CASCADE ON DELETE 
CASCADE,
        title SMALLINT NOT NULL DEFAULT 1,
        PRIMARY KEY (work,title),
        [...]

What does the error message mean?  What rule?  Why is SA trying 
to "blank out" (whatever that means) some attributes on an object
that is going away anyway?  But mostly: how do I fix?

----
[*1] 
If it matters, I am deleting the Title() object like:
  del Work.titles[2]

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to