Модель PyQT5 QtSql не загружает данные

Используя библиотеки QtSql, я пытаюсь загрузить данные в QTableView через QSqlTableModel; однако я не получаю данных в модели, когда вызываю метод select () модели:

from PyQt5.QtCore import Qt, QSize
from PyQt5.QtSql import *
from PyQt5.QtWidgets import QWidget, QTableView, QPushButton, QVBoxLayout


class SclDataBrowse(QWidget):
    def __init__(self, parent=None):
        super(SclDataBrowse, self).__init__(parent)
        self.resize(336, 462)
        self.setup_ui()
        self.setup_db()
        self.setup_model()
        self.view.setModel(self.model)
        if self.db.isOpen():
            self.load_data()

    def setup_ui(self):
        self.layout = QVBoxLayout(self)
        self.view = QTableView(self)
        self.btn_New = QPushButton(self)
        self.btn_New.setMinimumSize(QSize(70, 21))
        self.btn_New.setMaximumSize(QSize(70, 21))
        self.btn_New.setText('New')
        self.layout.addWidget(self.view)
        self.layout.addWidget(self.btn_New)

    def setup_db(self):
        self.db = QSqlDatabase("QMYSQL")
        self.db.setHostName(myhost)
        self.db.setUserName(myuser)
        self.db.setPassword(mypassword)
        self.db.setDatabaseName(mydb)
        self.db.open()

    def setup_model(self):
        self.model = QSqlTableModel(self)
        self.model.setTable("scldata")
        self.model.setEditStrategy(QSqlTableModel.OnManualSubmit)
        self.model.setHeaderData(0, Qt.Horizontal, 'ID')
        self.model.setHeaderData(1, Qt.Horizontal, 'Foreign ID')
        self.model.setHeaderData(2, Qt.Horizontal, 'Receipts Start')
        self.model.setHeaderData(3, Qt.Horizontal, 'Receipts End')
        self.model.setHeaderData(4, Qt.Horizontal, 'Billing Rate')

    def load_data(self):
        print('Loading Data')
        self.model.select()
        print(self.model.rowCount())

Что-то мне здесь не хватает?

какой вывод print(self.db.open())?

eyllanesc 26.10.2018 21:58
self.db.open() возвращает True
Elcid_91 26.10.2018 21:59
self.model.rowCount() возвращает 0 строк. Проверено написание таблицы и наличие в ней данных.
Elcid_91 26.10.2018 22:02

Уже сделано - возвращено 5 рядов

Elcid_91 26.10.2018 22:03

выполнить: query = QSqlQuery() if query.exec_("select * from scldataselect"): print(query.size()) else: print("error: ", query.lastError().text())

eyllanesc 26.10.2018 22:08

Интересно: QSqlQuery::exec: database not open Но я бы никогда не воспользовался этим методом, если бы база данных не была открыта.

Elcid_91 26.10.2018 22:13

вы должны выполнить его, вы должны открыть базу данных, например: load_data

eyllanesc 26.10.2018 22:14

Но я открыл базу данных в setup_db. Разве это не сохраняется?

Elcid_91 26.10.2018 22:14

Вы добавили его в конец setup_db?, Пожалуйста, будьте точны в своих комментариях, например, я не знаю, где вы выполняете то, что я вам указал.

eyllanesc 26.10.2018 22:18

Добавлен в конец setup_db (это в коде, который я опубликовал). Также интересно: переместил self.db.open () в метод load_data (), и я получаю новую ошибку: Driver not loaded Driver not loaded

Elcid_91 26.10.2018 22:18

проверьте ваше соединение, сделайте простое соединение

eyllanesc 26.10.2018 22:32

Не уверен, что вы имеете в виду под простым подключением

Elcid_91 26.10.2018 22:45

Я изменил ваш код с query=QSqlQuery() на query=QSqlQuery(self.db), и query.size() сообщил правильное количество возвращенных строк. Однако это все еще не решает мою первоначальную проблему.

Elcid_91 26.10.2018 23:01

добавьте self.model.select() после self.model.setTable("scldata") и прокомментируйте строки, начинающиеся с: self.model.setHeaderData...

eyllanesc 26.10.2018 23:07

Нашел проблему. Похоже, мне нужно передать базу данных на QSqlTableModel(self,self.db).

Elcid_91 26.10.2018 23:08
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
15
42
0

Другие вопросы по теме