Джошуа Уиллман M - PyQt для начинающих
Название: | PyQt для начинающих | |
Автор: | Джошуа Уиллман M | |
Жанр: | Учебники и самоучители по компьютеру | |
Изадано в серии: | неизвестно | |
Издательство: | неизвестно | |
Год издания: | - | |
ISBN: | неизвестно | |
Отзывы: | Комментировать | |
Рейтинг: | ||
Поделись книгой с друзьями! Помощь сайту: донат на оплату сервера |
Краткое содержание книги "PyQt для начинающих"
Читаем онлайн "PyQt для начинающих". [Страница - 134]
.quit.
Убедившись, что SQLite установлен, перейдите в папку files в каталоге приложения,
где находится файл accounts.db, и выполните в оболочке следующую команду sqlite3:
$ sqlite3 accounts.db .dump >> accounts.sql
Вы увидите, что в папке files создан новый файл accounts.sql. Также стоит
отметить, что SQLite 3 входит в состав стандартной библиотеки Python, поэтому при
необходимости вы можете импортировать sqlite в свои приложения.
В следующем разделе мы рассмотрим, как использовать QSqlQuery не только для
создания таблиц.
Пояснения к запросу к базе данных с помощью
QSqlQuery
Программа, созданная в Листингах 14-8-14-10, не является необходимой для
графического интерфейса менеджера учета, но она дает еще несколько примеров
для понимания того, как вводить, обновлять и удалять записи с помощью SQL в
приложении PyQt. Цель раздела - продемонстрировать, как открыть существующую
базу данных и изменить ее содержимое. Мы сделаем это для базы данных, созданной
в разделе "Пояснения к работе с модулем QtSql".
Для Листинга 14-8 снова импортируем классы QSqlDatabase и QSqlQuery. Также
создадим новый класс QueryExamples и создадим два метода класса:
• createConnection() - устанавливает соединение с базой данных
• exampleQueries() - запрашивает базу данных для получения и изменения
существующих записей.
Листинг 14-8. Создание соединения для класса QueryExamples
# query_examples.py
# Импорт необходимых модулей
import sys
from PyQt6.QtSql import QSqlDatabase, QSqlQuery
class QueryExamples:
def __init__(self):
super().__init__()
self.createConnection()
self.exampleQueries()
366
ГЛАВА 14
ВВЕДЕНИЕ В РАБОТУ С БАЗАМИ ДАННЫХ
def createConnection(self):
"""Создание соединения с базой данных."""
database = QSqlDatabase.addDatabase("QSQLITE")
database.setDatabaseName("files/accounts.db")
if not database.open():
print("Невозможно открыть файл источника данных.")
sys.exit(1) # Код ошибки 1 - означает ошибку
Начнем с добавления базы данных, используя драйвер SQLite 3 и соединение
по умолчанию, поскольку в функции addDatabase() имя соединения не передается.
Далее установим базу данных, созданную в предыдущей программе, accounts.db.
Далее завершим подключение с помощью функции open().
В exampleQueries() в Листинге 14-9 рассмотрим, как использовать класс QSqlQuery
и SQL-команду SELECT для запроса к базе данных.
Листинг 14-9. Демонстрация доступа к базам данных SQL в PyQt
# query_examples.py
def exampleQueries(self):
"""Примеры работы с базой данных."""
# Конструктор QSqlQuery принимает необязательный
# объект QSqlDatabase, который указывает, какое
# соединение с базой данных следует использовать.
# В данном примере мы не указываем никакого соединения,
# поэтому используется соединение по умолчанию.
# При возникновении ошибки функция exec() возвращает false.
# Ошибка затем доступна в виде SqlQuery::lastError()
# Выполнение простого запроса
query = QSqlQuery()
query.exec("SELECT first_name, last_name FROM \
accounts WHERE employee_id > 2000")
# Навигация по набору результатов
while (query.next()):
f_name = str(query.value(0))
l_name = str(query.value(1))
print(f_name, l_name)
Мы создаем новый экземпляр QSqlQuery для поиска имен и фамилий сотрудников,
чьи идентификаторы сотрудников больше 2000.
С помощью этого запроса мы можем использовать значения first_name и last_name
для обновления или удаления записей. Для циклического просмотра результатов
запроса мы используем метод QSqlQuery next(). Другие методы, которые можно
использовать для навигации по результатам, включают next(), previous(), first() и last().
Дополнительные запросы показаны в Листинге 14-10.
ГЛАВА 14
ВВЕДЕНИЕ В РАБОТУ С БАЗАМИ ДАННЫХ
367
Листинг 14-10. Демонстрация вставки, обновления и удаления записей с помощью
SQL и PyQt
# query_examples.py
# Вставка одной новой записи в базу данных
query.exec("""INSERT INTO accounts (
employee_id, first_name, last_name,
email, department, country_id)
VALUES (2134, 'Robert', 'Downey',
'downeyr@job.com', 'Managerial', 1)""")
# Обновление записи в базе данных
query.exec("UPDATE accounts SET department = 'R&D' \
WHERE employee_id = 2134")
# Удалить запись из базы данных
query.exec("DELETE FROM accounts WHERE \
employee_id --">
Убедившись, что SQLite установлен, перейдите в папку files в каталоге приложения,
где находится файл accounts.db, и выполните в оболочке следующую команду sqlite3:
$ sqlite3 accounts.db .dump >> accounts.sql
Вы увидите, что в папке files создан новый файл accounts.sql. Также стоит
отметить, что SQLite 3 входит в состав стандартной библиотеки Python, поэтому при
необходимости вы можете импортировать sqlite в свои приложения.
В следующем разделе мы рассмотрим, как использовать QSqlQuery не только для
создания таблиц.
Пояснения к запросу к базе данных с помощью
QSqlQuery
Программа, созданная в Листингах 14-8-14-10, не является необходимой для
графического интерфейса менеджера учета, но она дает еще несколько примеров
для понимания того, как вводить, обновлять и удалять записи с помощью SQL в
приложении PyQt. Цель раздела - продемонстрировать, как открыть существующую
базу данных и изменить ее содержимое. Мы сделаем это для базы данных, созданной
в разделе "Пояснения к работе с модулем QtSql".
Для Листинга 14-8 снова импортируем классы QSqlDatabase и QSqlQuery. Также
создадим новый класс QueryExamples и создадим два метода класса:
• createConnection() - устанавливает соединение с базой данных
• exampleQueries() - запрашивает базу данных для получения и изменения
существующих записей.
Листинг 14-8. Создание соединения для класса QueryExamples
# query_examples.py
# Импорт необходимых модулей
import sys
from PyQt6.QtSql import QSqlDatabase, QSqlQuery
class QueryExamples:
def __init__(self):
super().__init__()
self.createConnection()
self.exampleQueries()
366
ГЛАВА 14
ВВЕДЕНИЕ В РАБОТУ С БАЗАМИ ДАННЫХ
def createConnection(self):
"""Создание соединения с базой данных."""
database = QSqlDatabase.addDatabase("QSQLITE")
database.setDatabaseName("files/accounts.db")
if not database.open():
print("Невозможно открыть файл источника данных.")
sys.exit(1) # Код ошибки 1 - означает ошибку
Начнем с добавления базы данных, используя драйвер SQLite 3 и соединение
по умолчанию, поскольку в функции addDatabase() имя соединения не передается.
Далее установим базу данных, созданную в предыдущей программе, accounts.db.
Далее завершим подключение с помощью функции open().
В exampleQueries() в Листинге 14-9 рассмотрим, как использовать класс QSqlQuery
и SQL-команду SELECT для запроса к базе данных.
Листинг 14-9. Демонстрация доступа к базам данных SQL в PyQt
# query_examples.py
def exampleQueries(self):
"""Примеры работы с базой данных."""
# Конструктор QSqlQuery принимает необязательный
# объект QSqlDatabase, который указывает, какое
# соединение с базой данных следует использовать.
# В данном примере мы не указываем никакого соединения,
# поэтому используется соединение по умолчанию.
# При возникновении ошибки функция exec() возвращает false.
# Ошибка затем доступна в виде SqlQuery::lastError()
# Выполнение простого запроса
query = QSqlQuery()
query.exec("SELECT first_name, last_name FROM \
accounts WHERE employee_id > 2000")
# Навигация по набору результатов
while (query.next()):
f_name = str(query.value(0))
l_name = str(query.value(1))
print(f_name, l_name)
Мы создаем новый экземпляр QSqlQuery для поиска имен и фамилий сотрудников,
чьи идентификаторы сотрудников больше 2000.
С помощью этого запроса мы можем использовать значения first_name и last_name
для обновления или удаления записей. Для циклического просмотра результатов
запроса мы используем метод QSqlQuery next(). Другие методы, которые можно
использовать для навигации по результатам, включают next(), previous(), first() и last().
Дополнительные запросы показаны в Листинге 14-10.
ГЛАВА 14
ВВЕДЕНИЕ В РАБОТУ С БАЗАМИ ДАННЫХ
367
Листинг 14-10. Демонстрация вставки, обновления и удаления записей с помощью
SQL и PyQt
# query_examples.py
# Вставка одной новой записи в базу данных
query.exec("""INSERT INTO accounts (
employee_id, first_name, last_name,
email, department, country_id)
VALUES (2134, 'Robert', 'Downey',
'downeyr@job.com', 'Managerial', 1)""")
# Обновление записи в базе данных
query.exec("UPDATE accounts SET department = 'R&D' \
WHERE employee_id = 2134")
# Удалить запись из базы данных
query.exec("DELETE FROM accounts WHERE \
employee_id --">
Книги схожие с «PyQt для начинающих» по жанру, серии, автору или названию:
Поля Блю - SEO для Чайников Жанр: Околокомпьютерная литература Год издания: 2020 |
Ян Белецки - Турбо Паскаль с графикой для персональных компьютеров Жанр: Pascal, Delphi, Lazarus и т.п. Год издания: 1991 |
Ольга Романовская - Танец для двоих Жанр: Любовное фэнтези Год издания: 2017 |