ich bin neu hier im Forum und freue mich auf interessante Diskussionen!
Zur Zeit bastel ich daran herum, Datenbanken und Python besser zu verstehen. Dabei arbeite ich mit PyQt Designer und SQlite Studio, um mir das Leben zu erleichtern, die Anwendung schreibe ich im Jupyter Notebook. Und da bin ich auf ein Problem gestossen, das mich komplett ratlos macht. Hier der Code. Ich habe einiges rausgelöscht, was ich für mein Problem für unwesentlich halte. Wenn was Wichtiges fehlen sollte: Vielleicht ist das der Grund...
Code: Alles auswählen
from PySide6.QtWidgets import QApplication, QMainWindow, QTableWidgetItem
from PySide6 import QtSql, QtCore, QtGui, QtWidgets
from WiO_config import programmpfad #WiO ist mein persönlicher Name für das Projekt. In Config steckt bislang vor allem der Ablageort
os.chdir(programmpfad)
import WiO_functions as WiO_func #WiO_func ist eine Sammlung Datenbankfunktionen, die ich in allen Formularen benutze
os.chdir(programmpfad + "Forms")
from Assessments.frmIndications import Ui_frmIndications
class Frm_Indications(QMainWindow, Ui_frmIndications):
def __init__(self):
super().__init__()
self.setupUi(self)
#Variablen (es gibt natürlich mehr als hier gezeigt, die haben m. E. aber nichts mit dem Problem zu tun)
self.database_assess = 'Pfad zur gewünschten DB'
self.query = 'qryIndication'
#Verbindung zur Datenbank
self.db_assess = QtSql.QSqlDatabase.addDatabase("QSQLITE", self.database_assess)
self.db_assess.setDatabaseName(programmpfad + self.database_assess)
self.db_assess.open()
self.mod_Indication = QtSql.QSqlQueryModel #Dieses Modell soll am Ende die Daten enthalten, die ich an einen QTableView übergeben will
#Es folgt ein Haufen Code zur Einrichtung des Formulars. Der Spaß geht los, wenn ich mein Modell über setQuery() mit Daten füllen willl. Das geschieht durch Aufruf von Search()
def Search(self):
#create_WHERE() bastelt aus den Listen 'Select...' und '_map' einen WHERE String : "datenfeld1 LIKE '%Inhalte Formularfeld1 %'..."
WHERE = WiO_func.create_WHERE(select_datafields, self.data_map, select_cbo, self.cbo_map, select_txt, self.txt_map)
self.mod_Indication.setQuery("SELECT * FROM qryIndication " + WHERE, db = self.db_assess)
Code: Alles auswählen
TypeError: descriptor 'setQuery' for 'PySide6.QtSql.QSqlQueryModel' objects doesn't apply to a 'str' object
PySide2.QtSql.QSqlQueryModel.setQuery(query[, db=QSqlDatabase()])
Parameters:
query – str
db – PySide2.QtSql.QSqlDatabase
This is an overloaded function.
Executes the query query for the given database connection db . If no database (or an invalid database) is specified, the default connection is used.
Und das hier ist Beispielcode aus der Dokumentation:
Code: Alles auswählen
model = QSqlQueryModel()
model.setQuery("SELECT * FROM employee")
salary = model.record(4).value("salary")