Найти в Дзене

💻Разработка приложения "Дневник Енотика". часть 5. Как подключить базу данных SQLite в программе на Python?

Всем привет! 🦝 Совсем редко выходят статьи подобного характера. На самом деле я закопался в изучении Astra Linux CE, в частности в способе обновления VS Code до крайней версии. Сделать у меня этого так и не получилось, да и продолжать воевать в этими "ветряными мельницами" не вижу смысла. Разработка приложения переходит под Arch Linux. 🔗Предыдущая статья из цикла доступна по ссылке ниже 📌Напоминаю, что все коды проекта можно найти на GitHub Дальнейшую разработку приложения я решил продолжить на Arch Linux, так как здесь мне будет проще, и статьи о разработке будут выходить чаще. Конечно, тема Astra Linux CE весьма популярная на моем канале, но есть множество других, не менее интересных дистрибутивов Linux. Поэтому, почему бы и не попробовать писать про Arch Linux. Так как в нашем проекте используется база данных типа Sqlite, то для подключения к ней нам понадобится модуль sqlite3, встроенный в стандартную библиотеку Python. В методе connect, нужно будет указать путь до файла БД, а
Оглавление

Всем привет! 🦝 Совсем редко выходят статьи подобного характера. На самом деле я закопался в изучении Astra Linux CE, в частности в способе обновления VS Code до крайней версии. Сделать у меня этого так и не получилось, да и продолжать воевать в этими "ветряными мельницами" не вижу смысла. Разработка приложения переходит под Arch Linux.

🔗Предыдущая статья из цикла доступна по ссылке ниже

📌Напоминаю, что все коды проекта можно найти на GitHub

GitHub - winchik65/enotik_diary: "Enotik Diary" is a convenient and intuitive application for keeping a daily diary and tracking your thoughts, emotions and achievements.

🌊вВодная часть

Дальнейшую разработку приложения я решил продолжить на Arch Linux, так как здесь мне будет проще, и статьи о разработке будут выходить чаще. Конечно, тема Astra Linux CE весьма популярная на моем канале, но есть множество других, не менее интересных дистрибутивов Linux. Поэтому, почему бы и не попробовать писать про Arch Linux.

🗄Подключаем базу данных

Так как в нашем проекте используется база данных типа Sqlite, то для подключения к ней нам понадобится модуль sqlite3, встроенный в стандартную библиотеку Python. В методе connect, нужно будет указать путь до файла БД, а его мы будем получать из диалогового окна, которое будет вызываться по нажатию кнопки Выбор БД.

-2

Давайте реализуем метод вызова диалогового окна с помощью PyQt5. Для этого в коде главной формы main.py, получаем ссылку на объект кнопки на форме. Для этого воспользуемся методом findChild. Создаем переменную для кнопки в коде формы и используем ранее указанный метод. В параметры методу findChild нужно передать тип объекта, ссылку на который мы получаем и имя объекта на форме.

-3

Отлично! 🎉 Теперь при инициализации формы в переменную self.selDB будет записываться ссылка на объект кнопки на форме. Далее давайте добавим к кнопке событие, которое бы возникало по нажатию на эту самую кнопку. Чтобы добавить событие по клику к кнопке в PyQt5, на понадобиться метод .clicked.connect().

-4

Теперь если запустить программу, то по нажатию на кнопку в терминале будет появляться заданная в методе надпись selDB.

-5

Это конечно здорово, но давайте теперь добавим в этот метод вызов диалогового окна для выбора файла подключаемой БД. Для вызова диалога выбора файла в PyQt5 и получения пути выбранного файла нам понадобиться класс QFileDialog, а также метод .getOpenFileName(). Данный метод будет возвращает кортеж, содержащий путь к выбранному файлу и фильтр файлов. Для того чтобы получить только путь к файлу и игнорировать второе значение (фильтр файлов) мы будем использовать символ подчеркивания "_". Вот как будет выглядеть код:

-6

Отлично! 🎉 Теперь давайте создадим переменную для хранения подключения к БД. Теперь в метод connect модуля sqlite3, мы можем передать выбранный в диалоговом окне путь к файлу БД. Давайте так и сделаем.

-7

Теперь, для предотвращения вылетов программы, давайте обработаем исключения. Для этого код с подключением к БД оборачиваем конструкцией try...except

-8

💾Сохранение И чтение параметров

Далее я бы научил программу запоминать выбранную нами БД, чтобы даже после перезапуска она подключалась к выбранной БД. Для этого нам понадобиться создать файл конфигураций, в который мы будем записывать различные параметры используемые в нашем приложении.

Для работы с файлом конфигураций программы, мы будем использовать модуль configparser. Давайте создадим метод, в котором будут записываться все необходимые нам параметры приложения, в нашем случае он пока что один - это путь к выбранной БД.

-9

📌Примечание. Я определил в коде константу для хранения названия файла конфигураций БД - DB_CONF

Далее сделаем так, чтобы путь к выбранной базе сохранялся в параметрах, когда мы его выбираем в диалоговом окне.

-10

Осталось немного, нужно сделать так, чтобы программа при запуске читала файл конфигураций, находила в нем путь к БД и подключалась к ней. Для этого добавим ещё два метода: один (load_app) будет отвечать за набор функций при загрузке программы; а второй (load_db_conf) будет читать файл конфигураций, если таковой имеется.

Метод чтения файла конфигураций для БД

-11

Метод для выполнения функций при загрузке программы

-12

Далее добавляем метод выполнения функций при загрузке в метод инициализации формы

-13

И теперь, если есть файл с конфигурациями к БД и в нем есть путь к существующей БД, то программа при запуске прочтет файл конфигураций, найдет в нем путь к БД и подключиться к ней.

А на сегодня всё! 🦝 Да, статья вышла не большая, но в ней мы рассмотрели возможность программирования кнопки на форме и немного коснулись работы с файлами. Дальше будет много кода...

-14