Шаг 159.
Библиотека PyQt5.
Работа с базами данных. Соединение с базой данных
На этом шаге мы рассмотрим особенности организации такого соединения и методы класса QSqlDatabase.
За соединение с базой данных и обработку транзакций отвечает класс QSqlDatabase.
Чтобы установить соединение с базой, следует вызвать статический метод addDatabase() этого класса. Формат вызова:
addDatabase(<Формат базы данных>
[, connectionName="qt_sql_default_connection"])
Первым параметром указывается строка, обозначающая формат открываемой базы данных. Поддерживаются следующие форматы:
- QMYSQL и QMYSQL3 (MySQL),
- QODBC и QODBC3 (ODBC),
- QPSQL и QPSQL7 (PostgreSQL) и
- QSQLITE (SQLite версии 3).
Вторым параметром можно задать имя соединения, что может оказаться полезным, если приложение работает сразу с несколькими базами. Если имя соединения не указано, устанавливаемое
соединение будет помечено как используемое по умолчанию.
Метод addDatabase() возвращает экземпляр класса QSqlDatabase, представляющий базу данных, с которой установлено соединение. Теперь мы можем задать параметры базы,
воспользовавшись одним из перечисленных далее методов QSqlDatabase:
- setHostName (<Хост>) - задает хост, на котором расположена база данных. Используется только для серверов данных, наподобие MySQL;
- setPort (<Номер порта>) - задает номер порта, через который будет выполнено подключение к хосту. Используется только для серверов данных и лишь в том случае, если сервер настроен на использование порта, отличного от порта по умолчанию;
- setDatabaseName (<Имя или путь к базе данных>) - задает имя базы данных (для серверов данных), путь к ней (для "настольных" баз данных, таких как SQLite) или полный набор параметров подключения (если используется ODBC);
- setUserName (<Имя>) - задает имя для подключения к базе. Используется только для серверов данных;
- setPassword (<Пароль>) - задает пароль для подключения к базе. Используется только для серверов данных;
- setConnectOptions (<Параметры>) - задает набор дополнительных параметров для подключения к базе в виде строки. Набор поддерживаемых дополнительных параметров
различен в зависимости от выбранного формата и приведен в документации по классу QSqlDatabase.
Для работы с базой предназначены следующие методы класса QSqlDatabase:
- open () - открывает базу данных. Возвращает True, если база была успешно открыта, и False - в противном случае;
Примечание.
Перед созданием соединения с базой данных обязательно следует создать объект приложения (экземпляр объекта QApplication). Если этого не сделать, PyQt не сможет загрузить драйвер
указанного формата баз данных, и соединение не будет создано.
Открываемая база данных уже должна существовать на диске или сервере. Единственное исключение - база формата SQLite, которая, в случае ее отсутствия, будет создана автоматически.
- open (<Имя>, <Пароль>) - открывает базу данных с указанными именем и паролем. Возвращает True, если база была успешно открыта, и False - в противном случае;
- isOpen () - возвращает True, если база данных в настоящее время открыта, и False - в противном случае;
- isOpenError () - возвращает True, если при попытке открытия базы данных возникли ошибки, и False - в противном случае;
- transaction () - запускает транзакцию, если формат базы поддерживает таковые. Если же формат базы не поддерживает транзакции, то не делает ничего. Возвращает True,
если транзакция была успешно запущена, и False - в противном случае;
- commit () - завершает транзакцию, если формат базы поддерживает таковые. Если же формат базы не поддерживает транзакции, то не делает ничего. Возвращает True, если
транзакция была успешно завершена, и False - в противном случае;
- rollback () - отменяет транзакцию, если формат базы поддерживает таковые. Если же формат базы не поддерживает транзакции, то не делает ничего. Возвращает True, если
транзакция была успешно отменена, и False - в противном случае;
- lastError () - возвращает сведения о последней возникшей при работе с базой ошибке в виде экземпляра класса QSqlError;
- connectionName () - возвращает строку с именем соединения с базой или строку qt_sql_default_connection для соединения по умолчанию;
- tables ([type=Tables]) - возвращает список таблиц, хранящихся в базе. В параметре type можно указать тип таблиц в виде одного из атрибутов класса QSql или их
комбинации через оператор |:
- Tables (или 1) - обычные таблицы;
- SystemTables (или 2) - служебные таблицы;
- Views (или 4) - представления;
- AllTables (или 255) - все вышеперечисленное;
- record (<Имя таблицы>) - возвращает сведения о структуре таблицы с переданным именем, представленные экземпляром класса QSqlRecord, или пустой экземпляр этого класса, если таблицы с таким именем нет;
- primaryIndex (<Имя таблицы>) - возвращает сведения о ключевом индексе таблицы с переданным именем, представленные экземпляром класса QSqlIndex, или пустой экземпляр этого класса, если таблицы с таким именем нет;
- close () - закрывает базу данных.
На следующем шаге мы закончим изучение этого вопроса.
Предыдущий шаг
Содержание
Следующий шаг