--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/degal/db.py Wed Jun 03 20:41:52 2009 +0300
@@ -0,0 +1,64 @@
+import sqlite3
+
+try :
+ conn = sqlite3.connect("db/degal.db")
+
+except sqlite3.OperationalError :
+ conn = None
+
+def execute (expr, *args) :
+ c = conn.cursor()
+ c.execute(expr, args)
+
+ return c
+
+def execute_many (expr, iter) :
+ c = conn.cursor()
+ c.executemany(expr, iter)
+
+ return c
+
+def insert (expr, *args) :
+ return execute_commit(expr, *args).lastrowid
+
+def insert_many (cb, expr, iter) :
+ """
+ Perform an executemany with the given iterator (which must yield (cb_val, args) tuples), calling the given callback with the args (cb_val, row_id)
+ """
+
+ c = conn.cursor()
+
+ c.executemany(expr, _lastrowid_adapter(c, iter, cb))
+
+ return commit(c)
+
+def _lastrowid_adapter (c, iter, cb) :
+ for val, args in iter :
+ yield args
+
+ cb(val, c.lastrowid)
+
+def commit (cursor) :
+ try :
+ cursor.execute("COMMIT")
+ except sqlite3.OperationalError :
+ pass # ffs. INSERT just doesn't do anything otherwise
+
+ return cursor
+
+def execute_commit (expr, *args) :
+ return commit(execute(expr, *args))
+
+def execute_commit_many (expr, iter) :
+ return commit(execute_many(expr, iter))
+
+select = execute
+
+delete = execute_commit
+
+delete_many = execute_commit_many
+
+if conn :
+ cursor = conn.cursor
+
+