-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Dennis Benzinger wrote: > [EMAIL PROTECTED] wrote: >> Is it possible to use this for sending triggers to a sqlite db?Could >> someone provide me with an example of how to do this please? >> Thanks > > Do you want to implement a trigger for a SQLite database in Python? > > That won't work. Triggers in SQLite can only contain UPDATE, INSERT, > DELETE and SELECT statements http://sqlite.org/lang_createtrigger.html>.
Yes, but you can fake it. You can create a new SQL function using pysqlite's create_function, and then just call that function in the trigger. In that Python function from the trigger, you can then even access SQLite again. I've attached a quick-and-dirty example. Note that exceptions in functions get ignored currently, so you better implement a try-except with some kind of logging during development, otherwise you will wonder why nothing happens. Also, older pysqlite releases won't provide useful error messages if you have errors in the SQL you send to executescript(). Using a recent pysqlite release is recommended if you plan to use executescript(). - -- Gerhard -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2.2 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFEgMQrdIO4ozGCH14RArFaAKCU8lgwidMoNQ0GGKVwJ2GV9xPF8ACfTDhv QVHvudLfoDGiIyFgHe5w6L4= =bfUa -----END PGP SIGNATURE-----
from pysqlite2 import dbapi2 as sqlite def duplicate(col1, col2): cur = con.cursor() cur.execute("insert into test2(col1, col2) values (?, ?)", (col1, col2)) con = sqlite.connect(":memory:") con.create_function("duplicate", 2, duplicate) cur = con.cursor() cur.executescript(""" create table test(col1, col2); create table test2(col1, col2); create trigger my_trigger after insert on test for each statement begin select duplicate(new.col1, new.col2); end; """) cur.executemany("insert into test(col1, col2) values (?, ?)", [(x, x+1) for x in range(5, 8)]) con.commit() cur.execute("select col1, col2 from test2") print cur.fetchall()
-- http://mail.python.org/mailman/listinfo/python-list