musicpom/DBA.py
billypom on debian 5adb760d83 scan files thread
2025-07-20 20:45:57 -04:00

59 lines
1.5 KiB
Python

import sqlite3
import logging
from configparser import ConfigParser
from pathlib import Path
from appdirs import user_config_dir
class DBAccess:
def __init__(self, db_name=None):
logging.info("Instantiating DBAccess")
config = ConfigParser()
cfg_file = (
Path(user_config_dir(appname="musicpom", appauthor="billypom"))
/ "config.ini"
)
config.read(cfg_file)
if db_name is None:
db_name = config.get("settings", "db")
self._conn: sqlite3.Connection = sqlite3.connect(db_name)
self._cursor: sqlite3.Cursor = self._conn.cursor()
def __enter__(self):
return self
def __exit__(self, exc_type, exc_val, exc_tb):
self.close()
@property
def connection(self):
return self._conn
@property
def cursor(self):
return self._cursor
def commit(self):
self.connection.commit()
def close(self, commit=True):
if commit:
self.commit()
self.connection.close()
def execute(self, sql, params):
self.cursor.execute(sql, params or ())
def executemany(self, sql, seq_of_params):
self.cursor.executemany(sql, seq_of_params) # sqlite has execute many i guess?
def fetchall(self):
return self.cursor.fetchall()
def fetchone(self):
return self.cursor.fetchone()
def query(self, sql, params):
self.cursor.execute(sql, params or ())
return self.fetchall()