Thanks, I tried it...but could not get the desired result ( enforced
FKs using SQLite ).
Here is my test code:

#!/usr/bin/env python
import sqlalchemy
from sqlalchemy.interfaces import PoolListener

class MyListener(PoolListener):
    def connect(self, dbapi_con, con_record):
        dbapi_con.execute('PRAGMA foreign_keys = ON;')

engine = sqlalchemy.create_engine('sqlite:///:memory:', echo=True,
                                  listeners=[MyListener()])

metadata = sqlalchemy.MetaData(bind=engine)

from sqlalchemy import Table, Column, ForeignKey, Integer

parent_table = Table('parent',metadata,
                     Column('id',Integer,primary_key=True)
                     )

child_table  = Table('child',metadata,
                     Column('id',Integer,primary_key=True),
 
Column('parent_id',Integer,ForeignKey('parent.id'))
                     )

metadata.create_all(bind=engine)

engine.connect()
engine.execute(parent_table.insert().values(id=44))

try:
    engine.execute(child_table.insert().values(id=55,parent_id=33))
    print 'Foreign Keys were NOT enforced!'
except:
    print 'Foreign Keys were enforced.'

------------------------------------
The result I get is :"not enforced".
using SQLite 3.6.23 on Windows
Am I doing it right?



On Apr 12, 8:26 pm, Michael Bayer <mike...@zzzcomputing.com> wrote:
> On Apr 12, 2010, at 7:22 PM, NickPerkins wrote:
>
> > Apparently, new versions of SQLite will enforce Foreign Keys ( unlike
> > previous versions ), but, for the sake of backwards-compatibility, you
> > have to explicitly turn on foreign key enforcement by issuing: "pragma
> > foreign_keys=on;".
>
> >http://www.sqlite.org/foreignkeys.html
>
> > I am new to SQLAlchemy -- how can I implement this in my program?
> > The docs say that it must be turned on for each database connection
> > separately.
>
> Apply a PoolListener to your engine which implements this call for each new 
> connection:
>
> http://www.sqlalchemy.org/docs/reference/sqlalchemy/interfaces.html?h...
>
>
>
>
>
> > --
> > You received this message because you are subscribed to the Google Groups 
> > "sqlalchemy" group.
> > To post to this group, send email to sqlalch...@googlegroups.com.
> > To unsubscribe from this group, send email to 
> > sqlalchemy+unsubscr...@googlegroups.com.
> > 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 sqlalch...@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