Solved...by replacing the sqlite3.dll in my c:\Python25\DLLS\ with a new one.
On Apr 13, 6:33 pm, NickPerkins <nickperkinslon...@gmail.com> wrote: > It seems that I have more than one version of SQLite installed! > When I run from Python, it picks up an older version than the new one > I put in the project directory. > I just have to figure out which SQLite it's finding, and how to make > it use the new one.... > ( thanks for the help! ) > > On Apr 13, 9:59 am, "Michael Bayer" <mike...@zzzcomputing.com> wrote: > > > > > NickPerkins wrote: > > > 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.' > > > have you confirmed this works with a raw sqlite3 connection ? > > > > ------------------------------------ > > > 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. -- 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.