Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 30, 2025 14:18:46

KImJon
Зарегистрирован: 2021-08-01
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Не заполняется таблица в БД

Приветствую Друзья!!!
Объясните пожалуйста мне, один нюанс в табличной модели. Я уже который день голову ломаю
Начну с самого начала вернувшись обратно к своей любимой теме, “Создание СУБД”….. Изучаю я по книге: Прохорёнок Н.А. Дронов В.А. - Python 3 и PyQt6 Разработка приложений.
там указан листинг:

 from PyQt6 import QtCore, QtGui, QtWidgets, QtSql
import sys
def addRecord():
    if stm.value("category") == []:
        # Вставляем пустую запись, которую пользователь сможет ввести нужные данные
        stm.insertRecord(stm.rowCount())
def deleteRecord():
    # Удаляем запись из модели
    stm.removeRecord(tv.currentIndex().row())
    stm.select
app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QWidget()
window.setWindowTitle("Добавление и удаление записи")
# Устанавливаем соединение с базой данных
con = QtSql.QSqlDatabase.addDatabase("QSQLITE")
con.setDatabaseName("data.sqlite")
con.open()
# Создаем модель
stm = QtSql.QSqlTableModel(parent=window)
stm.setTable("category")
stm.sort(1, QtCore.Qt.SortOrder.AscendingOrder)
stm.select()
# Задает заголовки
stm.setHeaderData(0, QtCore.Qt.Orientation.Horizontal, "Номер записи")
stm.setHeaderData(1, QtCore.Qt.Orientation.Horizontal, "Категория")
vbox = QtWidgets.QVBoxLayout()
tv = QtWidgets.QTableView()
tv.setModel(stm)
tv.setColumnWidth(1, 60)
tv.setColumnWidth(2, 150)
vbox.addWidget(tv)
btnAdd = QtWidgets.QPushButton("&Добавить запись")
btnAdd.clicked.connect(addRecord)
vbox.addWidget(btnAdd)
btnDel = QtWidgets.QPushButton("&Удалить запись")
btnDel.clicked.connect(deleteRecord)
vbox.addWidget(btnDel)
window.setLayout(vbox)
window.resize(400, 250)
window.show()
sys.exit(app.exec())
Проблема в том, что если таблице нет записей то при нажатии на кнопке, “&Добавить запись”, таблица не переходит в режим редактирования и вsходит сообщение:
Process finished with exit code -1073740791(0xC0000409)
. И как не меняй функцию:
“addRecord”
 if stm.value("category") == []:
        # Вставляем пустую запись, которую пользователь сможет ввести нужные данные
        stm.insertRecord(stm.rowCount())
или
  if stm.Null == True:
        # Вставляем пустую запись, которую пользователь сможет ввести нужные данные
        stm.insertRecord(stm.rowCount())
все равно выходит сообщение:
Process finished with exit code -1073740791 (0xC0000409)

Офлайн

#2 Янв. 31, 2025 09:26:40

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

Не заполняется таблица в БД

пример рабочий
https://it.kgsu.ru/Python_Qt/pyqt5_173.html

KImJon
stm.select
тут ошибка - stm.select()
проверьте есть ли таблица такая
 con.setDatabaseName("data.sqlite")
print(con.open())
print(con.tables())

Офлайн

#3 Янв. 31, 2025 10:00:30

KImJon
Зарегистрирован: 2021-08-01
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Не заполняется таблица в БД

Таблица есть
Все как положено сделал

 C:\Users\mikki\PycharmProjects\PythonProject5\.venv\Scripts\python.exe C:\Users\mikki\PycharmProjects\PythonProject5\Database\InsertTbCategory.py 
True
['good', 'sqlite_sequence', 'name', 'klass', 'category']
Process finished with exit code -1073740791 (0xC0000409)
Также я смотрел через программу “DB Browser for SQLite”

Прикреплённый файлы:
attachment category.png (28,5 KБ)

Офлайн

#4 Янв. 31, 2025 14:25:42

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

Не заполняется таблица в БД

попробуйте через try/except ошибку отловить

 def addRecord():
    try:
        if stm.value("category") == []:
            # Вставляем пустую запись, которую пользователь сможет ввести нужные данные
            stm.insertRecord(stm.rowCount())
    except Exception as e:
        print(repr(e))

Офлайн

#5 Янв. 31, 2025 14:57:17

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

Не заполняется таблица в БД

vic57
if stm.value(“category”) == :
у меня такая ошибка вылезла
 'QSqlTableModel' object has no attribute 'value'

Офлайн

#6 Фев. 2, 2025 14:28:20

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

Не заполняется таблица в БД

специально дронова посмотрел.
научитесь переписывать без ошибок хотя бы

Прикреплённый файлы:
attachment Снимок экрана 2025-02-02 в 15.26.06.png (99,6 KБ)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version