SQLite: Kann man mit zwei Datenbank-Files arbeiten ?
Verfasst: Mittwoch 12. März 2014, 02:01
In einem Pyside-Programm möchte ich gerne 2 Datenbanken benutzen - eine sehr grosse Ortsdatenbank für lesenden Zugriff und eine Datenbank mit den Haupt-Daten.
Wenn ich folgendes mache, wird der Treiber nicht geladen:
Wenn ich es überprüfe,
erhalte ich:
die Connection lässt sich auch öffnen:
liefert:
Nach einer Query:
erhalte ich:
Wie bekomme ich das mit den zwei Datenbanken denn sonst hin ? Sie müssen nicht unbedingt zur gleichen Zeit geöffnet sein. Geht das nur mit addDatabase und removeDatabase ?
Mit dem normalen QSqlDatabase.addDatabase("QSQLITE") wird der Treiber geladen.
Wenn ich folgendes mache, wird der Treiber nicht geladen:
Code: Alles auswählen
localities_db = QSqlDatabase.addDatabase("QSQLITE", "locs")
localities_db.setDatabaseName(defs.SQLITE_PATH+'localities.sqlite')
localities_db.setConnectOptions("QSQLITE_OPEN_READONLY")
data_db = QSqlDatabase.addDatabase("QSQLITE", "data")
data_db.setDatabaseName(defs.SQLITE_PATH+'data.sqlite')
Code: Alles auswählen
print('Connections: '+str(self.localities_db.connectionNames()))
Code: Alles auswählen
Connections: ['locs']['data']
Code: Alles auswählen
ok = self.localities_db.open()
print('isOpen: '+str(self.localities_db.isOpen()))
Code: Alles auswählen
isOpen: True
Code: Alles auswählen
ok = villages_model.setQuery('SELECT * FROM villages WHERE name = "%s"' % name)
if not ok:
print('ok: '+str(ok))
print("Query Fehler : " + self.villages_model.lastError().text())
return
Code: Alles auswählen
QSqlQuery::exec: database not open
ok: None
Query Fehler : Driver not loaded Driver not loaded
Mit dem normalen QSqlDatabase.addDatabase("QSQLITE") wird der Treiber geladen.