PySide + Sqlite = Driver not loaded
-
Despite a great deal of Googling, I can't find why Qt is unable to find the Sqlite plugin for a QSqlDatabase.
Things I have verified:
libqt-sql-sqlite package installed
/usr/lib/x86_64-linux-gnu/qt4/plugins/sqldrivers/libsqlite.so is present
"/usr/lib/x86_64-linux-gnu/qt4/plugins/" is present in the QApplication libraryPaths()
Tried instantiating QApplication prior to call to addDatabase so that library search paths are initialised.When I call drivers() on the QSqlDatabase, it listed QSQLITE as an available driver. But when I call addDatabase("QSQLITE"), the database is not open/valid with a lastError of "Driver not loaded Driver not loaded". I've got Qt/PySide installed from Ubuntu packages, so I can't (as far as I know) do the configure option to force Sql driver building/static-linking.
Any pointers are greatly appreciated.OS: Ubuntu 11.10 x64
Current latest packages of Qt/PySide.I can't help thinking this must be a bug, by the fact QSqlDatabase tells me the driver is available, with the drivers() list as well as even explicitly stating "isDriverAvailable("QSQLITE")" -> True, but then failing to add a database with this driver as the driver/plugin isn't loaded.
-
Ok, found the problem. User error as usual. I failed to notice that the addDatabase function was a static and not a bound method. I was deriving from QSqlDatabase and calling it on self, my bad. Though I'm a little perplexed as to why the lastError function returned "Driver not loaded"..that threw me off a bit. Calling the static addDatabase shouldn't have changed the state of my derived object, so I don't know where that "driver not loaded" error came from, as the object was for all intent blank/uninitialised.
Unless driver not loaded is the default error message for when an Sql object is uninitialised?