Probleme mit QTSQL (PyQT)

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
DrBob
User
Beiträge: 4
Registriert: Dienstag 26. Oktober 2010, 14:26

Hi,
ich habe hier ein Problem und weiss einfach nicht mehr weiter.
Ich benutze qtsql aus pyqt.
Ich kann mich zur Datenbank connecten. Ich habe ein query erstellt und rufe mit exec_ ein SELECT-statement auf. Wenn ich nun den query untersuche sehe ich,
dass isSelect und ist isActive true sind
aber isValid ist false.
Wenn ich nun mit first() auf den ersten Eintrag gehen will wird mir ein false zurückgegeben. Ich kann einfach nicht auf die Einträge zugreifen.
Wenn ich size() benutze wird mir eine 2 zurückgegeben was richtig ist.

Hat jemand eine Idee?
Güße,
Marc
Benutzeravatar
lutz.horn
User
Beiträge: 205
Registriert: Dienstag 8. November 2005, 12:57
Wohnort: Pforzheim

Poste doch mal Deinen Code, dann kann man Dir besser helfen.
https://www.xing.com/go/invite/18513630.6a91d4
DrBob
User
Beiträge: 4
Registriert: Dienstag 26. Oktober 2010, 14:26

Hier ein Ausschnitt aus dem Code. Evtl bin ich auch einfach nur zu doof.

db = QSqlDatabase.addDatabase("QMYSQL");
db.setHostName("Blah@BLah.de")
db.setDatabaseName("BSP")
db.setUserName("USR")
db.setPassword("PSW")
db.open()

query = QSqlQuery(db)

query.exec_('SELECT name FROM monkey)

query.isSelect()
query.first()

x = query.value(1)
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

ich nutzte zwar kein QtSQL, aber lt. Doku kann das IMHO auch so nicht funktionieren.

query.value(1) setzt den Feldindex auf das 2. Feld (der Index ist, wie bei Python üblich, Null-basiert), dein Query hat aber nur ein Feld (nämlich "name").

Doku

Gruß, noisefloor
DrBob
User
Beiträge: 4
Registriert: Dienstag 26. Oktober 2010, 14:26

Oh, das habe ich vergessen dazu zu schreiben. Ich habe es auch schon mit value(0) versucht. Beim rumprobieren war jetzt gerade nur auf 1. Funktioniert aber beides nicht. Ich scheine den query nicht auf einen valid record setzen zu können. Ist sehr merkwürdig. Wenn ich
query.first()
benutze und dann
query.isValid()
bekomme ich auch an false.
query.size()
gibt aber eine 2 zurück. Es ist also was da.
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

kannst du dir nicht mal das "rohe" Resultat ausgeben lassen ( query.result() ?) ?

Gruß, noisefloor
DrBob
User
Beiträge: 4
Registriert: Dienstag 26. Oktober 2010, 14:26

Ok, hab jetzt
query.result()
aufgerufen. Das Ergebnis sah wie folgt aus:
<PyQt4.QtSql.QSqlResult object at 0x01E12C38>
Antworten