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: 68
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: 4623
Registriert: Freitag 17. April 2009, 10:28

In der Dokumentation scheint es eine Methode dafür zu geben.
DL3AD
User
Beiträge: 68
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: 4623
Registriert: Freitag 17. April 2009, 10:28

Dann zeig doch mal, was du tust, dass da -1 herahs kommt.
DL3AD
User
Beiträge: 68
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: 14270
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.
“Programming is partially an artform and, like artists, programmers will do it even if they don't get money.” — Linus Torvalds
DL3AD
User
Beiträge: 68
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: 14270
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.
“Programming is partially an artform and, like artists, programmers will do it even if they don't get money.” — Linus Torvalds
DL3AD
User
Beiträge: 68
Registriert: Montag 31. August 2015, 19:03

Du sprichts in Rätseln - Was sollte man noch testen ?
Benutzeravatar
__blackjack__
User
Beiträge: 14270
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.
“Programming is partially an artform and, like artists, programmers will do it even if they don't get money.” — Linus Torvalds
Antworten