Yep, though possibly you'd want it on before-drop.  You can actually 
handle both tasks in the same function if you like- the event name will 
be passed in as the first argument.

Randy Syring wrote:
> Jason,
> 
> Thank you for the response.  Using the method you suggest, am I
> understanding correctly that fks_for_sqlite() would only be run when a
> create() was processed for that table?  Also, I am assuming I would
> need to create a complimentary function for handling the 'after-drop'
> event.
> 
> On Aug 22, 1:25 pm, jason kirtland <[EMAIL PROTECTED]> wrote:
>> 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_s...
>>
>> 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_s...
>>> 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_...
>>>> 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 sqlalchemy@googlegroups.com
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