mirror of
https://gitlab.archlinux.org/archlinux/aurweb.git
synced 2025-02-03 10:43:03 +01:00
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>
38 lines
1.2 KiB
Python
38 lines
1.2 KiB
Python
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()
|