From 658f690b5b4051530b73f17434b5e6076e14e92c Mon Sep 17 00:00:00 2001 From: tcely Date: Wed, 11 Dec 2024 13:33:50 -0500 Subject: [PATCH] Add tubesync.sqlite3 --- tubesync/tubesync/sqlite3/base.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 tubesync/tubesync/sqlite3/base.py diff --git a/tubesync/tubesync/sqlite3/base.py b/tubesync/tubesync/sqlite3/base.py new file mode 100644 index 00000000..1ecb4419 --- /dev/null +++ b/tubesync/tubesync/sqlite3/base.py @@ -0,0 +1,28 @@ +from django.db.backends.sqlite3 import base + + +class DatabaseWrapper(base.DatabaseWrapper): + + def _start_transaction_under_autocommit(self): + conn_params = self.get_connection_params() + if "transaction_mode" not in conn_params: + self.cursor().execute("BEGIN TRANSACTION") + else: + tm = str(conn_params["transaction_mode"]).upper().strip() + transaction_modes = frozenset(["DEFERRED", "EXCLUSIVE", "IMMEDIATE"]) + if tm in transaction_modes: + self.cursor().execute(f"BEGIN {tm} TRANSACTION") + else: + self.cursor().execute("BEGIN TRANSACTION") + + + def init_connection_state(self): + conn_params = self.get_connection_params() + if "init_command" in conn_params: + ic = str(conn_params["init_command"]) + cmds = ic.split(';') + with self.cursor() as cursor: + for init_cmd in cmds: + cursor.execute(init_cmd.strip()) + +