DDL() has some simple templating capabilities that can help out a bit 
here, but I'd suggest taking the ForeignKey code Mike provided as a 
start and putting together an after-create listener using 
Table.append_ddl_listener directly:

http://www.sqlalchemy.org/docs/05/sqlalchemy_schema.html#docstrings_sqlalchemy.schema_Table

It would look something like:

   def fks_for_sqlite(event, table, bind):
       for c in table.c:
           for fk in c.foreign_keys:
              sql = your_code_to_make_trigger_for_fk(fk)
              bind.execute(sql)

   tbl.append_ddl_listener('after-create', fks_for_sqlite)


Michael Bayer wrote:
> you can build this functionality using the DDL() construct provided by  
> SQLAlchemy:
> 
> http://www.sqlalchemy.org/docs/05/sqlalchemy_schema.html#docstrings_sqlalchemy.schema_DDL
> 
> the ForeignKey objects on the table can be pulled out using:
> 
> for c in table.c:
>       for fk in c.foreign_keys:
>               do_something_with_fk(fk)
> 
> 
> 
> On Aug 22, 2008, at 11:19 AM, Randy Syring wrote:
> 
>> I would like sqlalchemy to generate triggers on an SQLite database to
>> enforce foreign key relationships.  The method is documented here:
>>
>> http://www.sqlite.org/cvstrac/wiki?p=ForeignKeyTriggers
>>
>> and I have written a foreign key trigger generator here:
>>
>> http://rcs-comp.com/site/index.php/view/Utilities-SQLite_foreign_key_trigger_generator
>>
>> Although it does not recognize the kind of references sqlalchemy
>> generates in the CREATE TABLE statements.
>>
>> Anyway, the point of this post is that I would like to know how I
>> should go about extending sqlalchemy so that when I use ForeignKey
>> constructs in the metadata, create statements on the tables would also
>> create the triggers and drop statements on the tables would drop the
>> said triggers to enforce the Foreign Key relationship.
>>
>> Thanks.
>>
> 
> 
> > 


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to