diff options
author | Lukas Fleischer <lfleischer@archlinux.org> | 2016-08-03 02:20:40 +0200 |
---|---|---|
committer | Lukas Fleischer <lfleischer@archlinux.org> | 2016-08-05 12:05:22 +0200 |
commit | 2915abb9d35308150ec107c5f4664e116daaf1de (patch) | |
tree | 1773a9c3b024904018ea46fd44c12865750bd673 /git-interface/db.py | |
parent | 2cd69bf66d244c7d438992aff1a03ea52cdba819 (diff) | |
download | aur-2915abb9d35308150ec107c5f4664e116daaf1de.tar.gz aur-2915abb9d35308150ec107c5f4664e116daaf1de.tar.xz |
git-interface: Add database abstraction layer
Add a new class that connects to the database specified in the
configuration file and provides an interface to execute SQL queries.
Prepared statements with qmark ("?") placeholders are supported.
Replace all direct database accesses with calls to the new abstraction
layer.
Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
Diffstat (limited to 'git-interface/db.py')
-rw-r--r-- | git-interface/db.py | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/git-interface/db.py b/git-interface/db.py new file mode 100644 index 00000000..d3e1e697 --- /dev/null +++ b/git-interface/db.py @@ -0,0 +1,38 @@ +import configparser +import mysql.connector +import os + + +class Connection: + _conn = None + + def __init__(self): + config = configparser.RawConfigParser() + config.read(os.path.dirname(os.path.realpath(__file__)) + "/../conf/config") + + 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) + + def execute(self, query, params=()): + query = query.replace('%', '%%').replace('?', '%s') + + cur = self._conn.cursor() + cur.execute(query, params) + + return cur + + def commit(self): + self._conn.commit() + + def close(self): + self._conn.close() |