diff options
Diffstat (limited to 'git-interface')
-rw-r--r-- | git-interface/db.py | 42 |
1 files changed, 29 insertions, 13 deletions
diff --git a/git-interface/db.py b/git-interface/db.py index c4c7d31..060689b 100644 --- a/git-interface/db.py +++ b/git-interface/db.py @@ -1,27 +1,43 @@ import mysql.connector +import sqlite3 import config class Connection: _conn = None + _paramstyle = None def __init__(self): - aur_db_host = config.get('database', 'host') - aur_db_name = config.get('database', 'name') - aur_db_user = config.get('database', 'user') - aur_db_pass = config.get('database', 'password') - aur_db_socket = config.get('database', 'socket') - - self._conn = mysql.connector.connect(host=aur_db_host, - user=aur_db_user, - passwd=aur_db_pass, - db=aur_db_name, - unix_socket=aur_db_socket, - buffered=True) + aur_db_backend = config.get('database', 'backend') + + if aur_db_backend == 'mysql': + aur_db_host = config.get('database', 'host') + aur_db_name = config.get('database', 'name') + aur_db_user = config.get('database', 'user') + aur_db_pass = config.get('database', 'password') + aur_db_socket = config.get('database', 'socket') + self._conn = mysql.connector.connect(host=aur_db_host, + user=aur_db_user, + passwd=aur_db_pass, + db=aur_db_name, + unix_socket=aur_db_socket, + buffered=True) + self._paramstyle = mysql.connector.paramstyle + elif aur_db_backend == 'sqlite': + aur_db_name = config.get('database', 'name') + self._conn = sqlite3.connect(aur_db_name) + self._paramstyle = sqlite3.paramstyle + else: + raise ValueError('unsupported database backend') def execute(self, query, params=()): - query = query.replace('%', '%%').replace('?', '%s') + if self._paramstyle == 'format': + query = query.replace('%', '%%').replace('?', '%s') + elif self._paramstyle == 'qmark': + pass + else: + raise ValueError('unsupported paramstyle') cur = self._conn.cursor() cur.execute(query, params) |