Приветствую Друзья!!!
Наконец-то я нашел литературу(с русским переводом) по созданию БД на PyQt6. PyQt6 для начинающих (Практический подход к графических интерфейсов с PyQt6). Автор Джошуа М. Уиллман
.
И вот опять я столкнулся со старой ошибкой....
Process finished with exit code -1073741819 (0xC0000005)
И что только я смотрел точки останова, закомментировал оператор выбора If... Then... , на папку ге находится файл проекты открыл дал права Администратора (в общем танцы с бубном не танцевал).
Ниже я выкладываю листинг и файл с проектом cделанный на моем любимом PyCharm
# Импорт необходимых модулей
import sys, random
import sqlite3
from PyQt6.QtSql import QSqlDatabase, QSqlQuery
class CreateEmployeeData:
"""Создаём пример базы данных для проекта
Класс демонстрирует как подключаться к базе данных, создавать
запросы, создавать таблицы и записи в этих таблицах"""
# Создаём соединение с базой данных. Если файл db
# не существует, будет создан новый файл db
# Использовать драйвер SQLite версии 3
#faulthandler.enable()
database = QSqlDatabase.addDatabase("QSQLITE")
database.setDatabaseName("accounts.db")
if not database.open():
print("Невозможно открыть файл источника данных")
sys.exit(1) # Код ошибки 1 - означает ошибку
# create database
query = QSqlQuery()
# Стирание содержимого базы данных
query.exec("DROP TABLE accounts")
query.exec("DROP TABLE countries")
query.exec("""CREATE TABLE accounts (
id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE 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(
amployee_id, first_name, last_name,
email, department, country_id)
VALUES (?, ?, ?, ?, ?, ?)""")
first_name = ["Emma", "Olivia", "Ava", "Isabella",
"Mia", "Charlotte", "Amelia", "Abigail",
"Valorie", "Teesha", "Jazzmin", "Liam",
"Noah", "William", "James", "Logan",
"Benjamin", "Mason", "Elajah", "Oliver",
"Lucas", "Michael"]
last_name = ["Smith", "Johnson", "Williams", "Brown",
"Jones", "Miller", "Davis", "Rodriguez",
"Martinez", "Hernandez", "Lopez", "Gonzalez",
"Wilson", "Anderson", "Thomas", "Taylor",
"Moore", "Jackson", "Martin", "Lee",
"Perez", "Thompson", "White", "Harris"]
# Создайте данные для первой таблицы
employee_ids = random.sample(
range(1000, 2500), len(first_name))
countries = {"USA":1, "India":2, "China":3,
"France":4, "United Kingdom":5, "Germany":6}
country_names = list(countries.keys())
country_codes = list(countries.values())
departments = ["Production", "R&D", "Marketing", "HR",
"Finance", "Engineering", "Managerial"]
for f_name in first_name:
l_name = last_name.pop()
email = (l_name + f_name[0].lower() + "@job.com")
country_id = random.choice(country_codes)
dept = random.choice(departments)
employee_id = employee_ids.pop()
query.addBindValue(employee_id)
query.addBindValue(f_name)
query.addBindValue(l_name)
query.addBindValue(email)
query.addBindValue(dept)
query.addBindValue(country_id)
query.exec()
# создайте данные для второй таблицы
country_query = QSqlQuery()
country_query.exec("""CREATE TABLE countries (
id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE NULL,
country VARCHAR(20) NOT NULL)""")
country_query.prepare(
"""INSERT INTO countries(country) VALUES (?)""")
for name in country_names:
country_query.addBindValue(name)
country_query.exec()
print("[NFO] Database succesfully created")
if __name__ == '__main__':
CreateEmployeeData()
sys.exit(0)