Библиотека knigago >> Компьютеры и Интернет >> Учебники и самоучители по компьютеру >> PyQt для начинающих


Книга Джозефа Стиглица «Ревущие девяностые. Семена развала» — это проницательный анализ глобальной экономики 1990-х годов. Лауреат Нобелевской премии по экономике, Стиглиц оспаривает широко распространенный взгляд на этот период как на время процветания и беззаботности. Стиглиц утверждает, что экономические политики, принятые в 1990-х годах, заложили основу для финансового кризиса 2008 года. Он критикует декларирование свободного рынка и финансовую либерализацию, которые привели к возросшему...

Джошуа Уиллман M - PyQt для начинающих

PyQt для начинающих
Книга - PyQt для начинающих.  Джошуа Уиллман M  - прочитать полностью в библиотеке КнигаГо
Название:
PyQt для начинающих
Джошуа Уиллман M

Жанр:

Учебники и самоучители по компьютеру

Изадано в серии:

неизвестно

Издательство:

неизвестно

Год издания:

-

ISBN:

неизвестно

Отзывы:

Комментировать

Рейтинг:

Поделись книгой с друзьями!

Помощь сайту: донат на оплату сервера

Краткое содержание книги "PyQt для начинающих"


Читаем онлайн "PyQt для начинающих". [Страница - 132]

ДАННЫХ

Листинг 14-4. Подключение к базе данных с помощью QSqlDatabase
# create_database.py
# Импорт необходимых модулей
import sys, random
from PyQt6.QtSql import QSqlDatabase, QSqlQuery
class CreateEmployeeData:
"""Создаем пример базы данных для проекта.
Класс демонстрирует, как подключаться к базе данных, создавать
запросы, создавать таблицы и записи в этих таблицах."""
# Создаем соединение с базой данных. Если файл db
# не существует, будет создан новый файл db.
# Использовать драйвер SQLite версии 3
database = QSqlDatabase.addDatabase("QSQLITE")
database.setDatabaseName("files/accounts.db")
if not database.open():
print("Невозможно открыть файл источника данных.")
sys.exit(1) # Код ошибки 1 - означает ошибку
Начнем с создания соединения с базой данных в классе CreateEmployeeData.
Функция addDatabase() позволяет указать используемый SQL-драйвер. В примерах
этой главы используется SQLite 3, поэтому мы передаем QSQLITE. После создания
объекта базы данных мы можем задать другие параметры подключения, в том числе,
какую базу данных мы будем использовать, имя пользователя, пароль, имя хоста и
порт подключения. Для SQLite 3 достаточно указать имя базы данных с помощью
функции setDatabaseName(). Можно также создать несколько соединений с базой
данных, передав в addDatabase() после аргумента driver дополнительный аргумент имя соединения.

Примечание. Ссылка на соединение осуществляется по его имени, а не по
имени базы данных. Если вы хотите присвоить базе данных имя, передайте
его в качестве аргумента после драйвера в методе addDatabase(). Если имя
не указано, то будет использовано соединение по умолчанию.
Если файл accounts.db еще не существует, то он будет создан. После установки
параметров необходимо вызвать open() для активации соединения с базой данных.
Соединение не может быть использовано до тех пор, пока оно не будет открыто.

ГЛАВА 14

ВВЕДЕНИЕ В РАБОТУ С БАЗАМИ ДАННЫХ

361

Построение набора данных с помощью QSqlQuery
Теперь, когда в CreateEmployeeData установлены соединения, можно приступить к
формированию запросов к базе данных. Как правило, можно начать с баз данных, в
которых уже есть данные, но в данном примере мы рассмотрим, как можно создать
базу данных с помощью команд SQL. Чтобы выполнить запрос к базе данных
с помощью PyQt, сначала нужно создать экземпляр QSqlQuery. Это делается в
Листинге 14-5.
Листинг 14-5. Создание набора данных с помощью QSqlQuery в классе
CreateEmployeeData
# create_database.py
query = QSqlQuery()
# Стирание содержимого базы данных
query.exec("DROP TABLE accounts")
query.exec("DROP TABLE countries")
query.exec("""CREATE TABLE accounts (
id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE NOT NULL,
employee_id INTEGER NOT NULL,
first_name VARCHAR(30) NOT NULL,
last_name VARCHAR(30) NOT NULL,
email VARCHAR(40) NOT NULL,
department VARCHAR(20) NOT NULL,
country_id VARCHAR(20) REFERENCES countries(id))""")
# Позиционная привязка для вставки записей в базу данных
query.prepare("""INSERT INTO accounts (
employee_id, first_name, last_name,
email, department, country_id)
VALUES (?, ?, ?, ?, ?, ?)""")
Метод exec() используется для выполнения SQL-запросов в PyQt. В следующих
строках мы хотим создать объект запроса и удалить accounts из таблицы:
query = QSqlQuery()
query.exec("DROP TABLE accounts")
Далее создадим новую таблицу счетов с помощью exec() и SQL-команды
CREATE TABLE accounts. Каждая запись таблицы будет иметь свой уникальный
идентификатор с помощью AUTOINCREMENT. Таблица accounts будет содержать
информацию об идентификаторе сотрудника, его имени, фамилии, электронной
почте, отделе и стране, в которой он находится. Мы также создадим таблицу countries,
которая будет содержать названия стран сотрудников и будет связана с таблицей
accounts с помощью следующей строки:
362

ГЛАВА 14

ВВЕДЕНИЕ В РАБОТУ С БАЗАМИ ДАННЫХ

country_id VARCHAR(20) REFERENCES countries(id))
В строке country_id содержится ссылка на id таблицы countries. На рис. 14-5
показана связь между двумя таблицами.

Рисунок 14-5. Связь между таблицами "Счета" и "Страны"
Следующей задачей является вставка записей в таблицы. Мы могли бы продолжать
использовать exec() для выполнения запросов, но при большом объеме базы данных
это стало бы утомительным. Для одновременной вставки нескольких записей мы
отделяем запрос от собственно вставляемых значений с помощью заполнителей и
метода prepare(). Заполнитель будет выступать в роли временной переменной, что
позволит пользователям вводить различные данные в один и тот же SQL-запрос. В
приведенном ниже коде позиционные заполнители - это "?". PyQt поддерживает два
варианта синтаксиса заполнителей: стиль ODBC, в котором используется "?", и стиль
Oracle, в котором --">

Оставить комментарий:


Ваш e-mail является приватным и не будет опубликован в комментарии.