I am trying to play with the sql alchemy ORM based db definition with an 
inmemory sqlite db. I have defined my tables as follows

class Customer(Base):
    __tablename__ = 'customer'

    id   = Column(Integer, primary_key=True)
    name = Column(String(80))

    auth   = relationship("CustomerAuth", backref='customer')


class CustomerAuth(Base):
    __tablename__ = 'authentication'

    id = Column(Integer, ForeignKey('customer.id'))
    username = Column(String(80), primary_key=True)
    passwd = Column(String(80))

Now I am creating the session

Session = sessionmaker(bind=sqla.engine)
session = Session()

And then I try to create two row objects for Customer with id 1 and 2

cst1 = sqla.Customer(id=1,name='shyam')
cst2 = sqla.Customer(id=2,name='ram')

And I create three row objects for CustomerAuth which reference to id 1, 2 
and 3 of Customer

auth1 = sqla.CustomerAuth(id=1,username='shyamu',passwd='wam')
auth2 = sqla.CustomerAuth(id=2,username='ramu',passwd='dam')
auth3 = sqla.CustomerAuth(id=3,username='lamu',passwd='sam')

As you can see I have created a CustomerAuth row with id = 3 , which is a 
foreign key referring the Customer.id. But since Customer table has no 
entry with id=3 , this should fail

session.add(cst1)
session.add(cst2)
session.add(auth1)
session.add(auth2)
session.flush()

This operation should fail but it goes through successfully.

session.add(auth3)
session.flush()

I want to know what am I not doing which bypasses the foreign key 
enforcement

Thanks in advance

-- 
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 sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
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