Seite 1 von 1

PySide6 und SLQLite

Verfasst: Montag 22. Januar 2024, 22:07
von wlfmario
Ich habe da mal wieder so ein Einsteigerproblem bei dem ich nicht weiter komme.

Ich habe mit PySide6 ein Formular erstellt mit einem TableView im den einfach nur Daten aus einer SQLite Datenbank angezeigt werden sollen.
Leider bekomme ich beim Aufruf der Datenbank folgenden Fehler:
qt.core.qobject.connect: QObject::connect(QObject, Unknown): invalid nullptr parameter
Hier mal mein Quellcode damit man nicht Raten muss. :lol:

Code: Alles auswählen

from PySide6.QtWidgets import QApplication, QMainWindow, QWidget
from PySide6 import QtSql
from frm_main import Ui_frm_main

class MainWindow(QMainWindow, Ui_frm_main):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        
        mod_ausgaben = QtSql.QSqlRelationalTableModel()
        mod_ausgaben.setTable("ausgaben")
        mod_ausgaben.select()
        self.tbv_uebersicht.setModel(mod_ausgaben)
        
if __name__ == "__main__":
   
    db = QtSql.QSqlDatabase.addDatabase("QSQLITE")
    db.setDatabaseName("haushaltsbuch.db")
    
    app = QApplication()
    window = MainWindow()
    window.show()
    app.exec()
   
Evtl. kann mir jemand einen Tipp geben wo der Fehler liegt und was man evtl. verbessern kann.
Danke.

Re: PySide6 und SLQLite

Verfasst: Montag 22. Januar 2024, 22:17
von Dennis89
Hallo,

vorweg, ich habe das noch nie benutzt, aber ich denke, dass du `db` an die Klasse übergeben musst, wenn du darin auf die Datenbank zugreifen willst.

Grüße
Dennis

Re: PySide6 und SLQLite

Verfasst: Dienstag 23. Januar 2024, 14:51
von wlfmario
Kleines Update:

Es liegt nicht am Quelltext, es liegt komischerweise an Visual Studio Code.
Ich habe mir den Quelltext mal in PyCharm geladen und ausgeführt, da funktioniert alles wie es soll.

Jetzt verstehe ich nur nicht warum es nicht in VSC funktioniert ?

Re: PySide6 und SLQLite

Verfasst: Montag 5. Februar 2024, 17:40
von bb1898
Ich nutze QtSql nur ganz selten und habe deshalb bei mir nur ein einziges annähernd passendes Beispiel gefunden. Darin wird die Datenbankverbindung nicht explizit an die Klasse übergeben - aber sie wird explizit geöffnet:

Code: Alles auswählen

ok = db.open()
if not ok:
	# Fehlerbehandlung nach Bedarf
Der open-Befehl scheint mir in Deinem Code zu fehlen. Und dazu könnte auch die Fehlermeldung durchaus passen.

Dass sich der Quelltext in PyCharm ausführen lässt, in Visual Studio Code aber nicht, muss nicht an einem Fehler in VSC liegen. Ich habe nicht die leiseste Ahnung, was PyCharm vielleicht von sich aus tut.
Auf jeden Fall würde ich Quelltext, der sich so verhält, ohne IDE ausführen und sehen, was dann passiert. Und zwar aus einer Eingabeaufforderung heraus, damit Fehlermeldungen auch angezeigt werden und stehen bleiben.