Anzahl der Datensätze in einer Query ermitteln

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
DL3AD
User
Beiträge: 56
Registriert: Montag 31. August 2015, 19:03

Hallo in die Runde,
ich habe eine Abfrage auf eine SQLite DB gemacht und möchte die Anzahl der Datensätze welche die Query gezogen hat ermitteln.

Code: Alles auswählen

        # Daten selektieren
        query2 = QtSql.QSqlQuery()
        sql_str2 = """SELECT strftime('%d.%m.%Y',Datum), Menge
                              FROM tab01 ORDER BY Datum DESC"""
        query2.exec(sql_str2)
Wie macht man das am besten ?

Frank
Benutzeravatar
sparrow
User
Beiträge: 4564
Registriert: Freitag 17. April 2009, 10:28

In der Dokumentation scheint es eine Methode dafür zu geben.
DL3AD
User
Beiträge: 56
Registriert: Montag 31. August 2015, 19:03

... hatte ich auch schon probiert - gibt dann -1 aus
Die Daten werden aber richtig in einer Tabelle angezeigt.
Benutzeravatar
sparrow
User
Beiträge: 4564
Registriert: Freitag 17. April 2009, 10:28

Dann zeig doch mal, was du tust, dass da -1 herahs kommt.
DL3AD
User
Beiträge: 56
Registriert: Montag 31. August 2015, 19:03

Hier ist der Codeschnipsel

Code: Alles auswählen

#==============================================================================
# Hauptfenster der Anwendung
#==============================================================================

# Import Anweisungen ==========================================================
from PySide6.QtWidgets import QMainWindow
from PySide6 import QtSql
from frm_main_ui import Ui_frm_main
from PySide6.QtCore import Qt, QDate

# Implementierungen ===========================================================
class FrmMain(QMainWindow, Ui_frm_main):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.btn_buchen.clicked.connect(self.eier_buchen) # Btn Eier Buchen
        self.show()

        # Variablen ===========================================================
        self.egg_old = 0
        self.egg_new = 0
        self.egg_max = 4
        self.data_cnt = 0

        # Initialisierungen ===================================================
        self.dateEdit_buch.setDate(QDate.currentDate())
        # Datenbankverbindung herstellen
        self.db = QtSql.QSqlDatabase.addDatabase("QSQLITE")
        self.db.setDatabaseName("Eierlog.sqlite")
        self.db.open()
        # Daten selektieren
        query2 = QtSql.QSqlQuery()
        sql_str2 = """SELECT strftime('%d.%m.%Y',Datum), Menge
                      FROM tab01 ORDER BY Datum DESC"""
        query2.exec(sql_str2)


        # Hier gibt er dann -1 aus
        print(query2.size())


        self.model = QtSql.QSqlQueryModel()
        self.model.setQuery(query2)


        # Daten in der Tabelle anzeigen
        self.model.setHeaderData(0, Qt.Orientation.Horizontal, "Legedatum")
        self.tableView.setModel(self.model)



Benutzeravatar
__blackjack__
User
Beiträge: 14160
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@DL3AD: Die -1 und Methoden die man sich auch mal anschauen könnte, werden ja in der Dokumentation auch erwähnt.
“It is easier to change the specification to fit the program than vice versa.” — Alan J. Perlis
DL3AD
User
Beiträge: 56
Registriert: Montag 31. August 2015, 19:03

Code: Alles auswählen

        print(query2.isSelect())
        print(query2.isActive())
... liefert beides true
Benutzeravatar
__blackjack__
User
Beiträge: 14160
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Tja, dann bleibt ja nicht mehr viel, aber es bleibt noch etwas das man testen kann.
“It is easier to change the specification to fit the program than vice versa.” — Alan J. Perlis
DL3AD
User
Beiträge: 56
Registriert: Montag 31. August 2015, 19:03

Du sprichts in Rätseln - Was sollte man noch testen ?
Benutzeravatar
__blackjack__
User
Beiträge: 14160
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@DL3AD: In der Dokumentation stehen ja mehrere Gründe wann eine -1 geliefert wird. Eine Sache hast Du noch nicht geprüft.
“It is easier to change the specification to fit the program than vice versa.” — Alan J. Perlis
Antworten