Универсальная функция для запросов к БД (Python + SQLite3)

В пет проекте есть функции по типу той, что приложу ниже. Вопрос такой: в каждой подобной функции есть конструкция "with sqlite3.connect('some.db') as connection:" и блок "try.... except". Запросы разные, количество принимаемых и отдаваемых аргументов разное.

Адекватно будет создать универсальную функцию "func(*args, **kwargs)", в которую я буду передавать запрос и параметры? Что лучше с точки зрения best practices? Или есть другие варианты?

Сейчас мой проект поделен на кучу модулей и я думаю о том, чтобы сократить / убрать некоторые из них. ООП не совсем понимаю, поэтому пока так.

Функция для добавления записи в журнал, подобные функции есть для чтения, всяких фильтров и т.д.:

def add_new_note(user_id):
    note = input('ВВЕДИТЕ ТЕКСТ: ')
    date = datetime.today().strftime("%H:%M-%d.%m.%Y")

    with sqlite3.connect('some.db') as connection:
        cursor = connection.cursor()

        try:
            with connection:
                query = '''INSERT INTO Journal (id_user, note, date)
                        VALUES ({}, {}, {})'''.format(user_id, note, date)
                cursor.execute(query)

        except Exception:
            print("тут ошибки какие-то")

    print("Запись добавлена")

Ответы (1 шт):

Автор решения: Roman-Stop RU aggression in UA

Создайте свой менеджер контекста:

from contextlib import contextmanager

@contextmanager
def open_cursor(dbfile):
    with sqlite3.connect(dbfile) as connection:
        cursor = connection.cursor()

        try:
            with connection:
                yield cursor

        except Exception:
            print("тут ошибки какие-то")

Использовать так:

def add_new_note(user_id):
    note = input('ВВЕДИТЕ ТЕКСТ: ')
    date = datetime.today().strftime("%H:%M-%d.%m.%Y")

    with open_cursor('some.db') as cursor:
         query = '''INSERT INTO Journal (id_user, note, date)
                    VALUES ({}, {}, {})'''.format(user_id, note, date)
         cursor.execute(query)

    print("Запись добавлена")
→ Ссылка