On Tue, 20 Sep 2011 09:14:20 -0400
Michael Bayer <mike...@zzzcomputing.com> wrote:

> 
> On Sep 20, 2011, at 3:24 AM, Enrico Morelli wrote:
> 
> > Dear all,
> > 
> > I'm using SA 0.6.7 on a RHEL 6 with Python 2.6 and PostgreSQL 8.4.7.
> > These are some table of my DB:
> > pdb_table = Table('pdb', metadata,
> >    Column('id', types.Integer, primary_key=True),
> >    Column('code', types.Unicode(4), nullable=False),
> > )
> > chain_table = Table('chain', metadata,
> >    Column('id', types.Integer, primary_key=True),
> >    Column('letter', types.Unicode(1), nullable=False),
> >    Column('pdb_id', types.Integer, ForeignKey('pdb.id')),
> >    )
> > 
> > metal_table = Table('metal', metadata,
> >    Column('id', types.Integer, primary_key=True),
> >    Column('number', types.Integer, nullable=False),
> >    Column('name', types.Unicode(4), nullable=False),
> >    Column('pdb_id', types.Integer, ForeignKey('pdb.id')),
> > )
> > 
> > mapper(Pdb, pdb_table)
> > mapper(Chain, chain_table,
> >       properties={
> >          'pdb': relationship(Pdb, backref='chain')
> >        })
> > mapper(Metal, metal_table,
> >       properties={
> >          'pdb': relationship(Pdb, backref='metal'),
> >          'chain': relationship(Chain, backref='metal'),
> >        })
> > 
> > If I try to remove a pdb table row related with others from
> > pgAdminIII, I correctly receive the constraint error and the row
> > isn't removed.
> > 
> > Using the following code, SA remove all rows related with others
> > without error:
> > for code in open(pdblist): 
> >    pdb = Session.query(Pdb).filter(Pdb.code==code.strip()).all()
> >    for p in pdb:
> >       # Remove PDB
> >       Session.delete(p)
> >       Session.commit()
> > 
> > Where I wrong?
> 
> Turn on echo=True in your create_engine() and you'll likely see
> SQLAlchemy setting those foreign key columns to NULL.      Set them
> to "NOT NULL" to see a nullable constraint error, or add
> "passive_deletes='all'" to each relationship() to turn off the null
> set.
> 
> http://www.sqlalchemy.org/docs/orm/relationships.html?highlight=relationship#sqlalchemy.orm.relationship
> 
> 

Thanks, I tried to put passive_deletes='all' in the relationships:

mapper(Site, site_table,
   properties={
     'pdb': relationship(Pdb, backref='site', passive_deletes='all'), })

mapper(Chain, chain_table,
  properties={
     'pdb': relationship(Pdb, backref='chain', passive_deletes='all')
        })

But I obtain:

/py_virt/metalweb/lib/python2.6/site-packages/SQLAlchemy-0.6.8-py2.6.egg/sqlalchemy/orm/properties.py:901:
SAWarning: On Chain.pdb, 'passive_deletes' is normally configured on 
one-to-many, one-to-one, many-to-many relationships only.
  self._determine_direction()

/py_virt/metalweb/lib/python2.6/site-packages/SQLAlchemy-0.6.8-py2.6.egg/sqlalchemy/orm/properties.py:901:
SAWarning: On Site.pdb, 'passive_deletes' is normally configured on 
one-to-many, one-to-one, many-to-many relationships only.
  self._determine_direction()


-- 
-------------------------------------------------------------------
       (o_
(o_    //\  Coltivate Linux che tanto Windows si pianta da solo.
(/)_   V_/_
+------------------------------------------------------------------+
|     ENRICO MORELLI         |  email: more...@cerm.unifi.it       |
| *     *       *       *    |  phone: +39 055 4574269             |
|  University of Florence    |  fax  : +39 055 4574253             |
|  CERM - via Sacconi, 6 -  50019 Sesto Fiorentino (FI) - ITALY    |
+------------------------------------------------------------------+

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