Hi people,

I'm trying to write a QT SQL driver for monetdb, but I've not been
successful. MonetDB is a database system that supports SQL and has
python bindings. Please see attachment for my initial tryout. The code
is far from complete, but I'm stuck at the beginning, the DriverCreator.

I subclass QSqlDriverCreatorBase To create a factory that returns
monetdb SQL driver instances, but when I run it I get the error:

TypeError: QtSql.QSqlDriverCreatorBase represents a C++ abstract class
and cannot be instantiated

So I assume that I'm not allowed to inherit this class from python. Am
I'm doing something wrong or is it only possible to do this with a C++
driver for now? This isn't really clear in the documentation or I can't
find it.

Is there anybody here who knows more about this, or tried to do
something similar?

Thanks!

--
Gijs Molenaar
http://gijs.pythonic.nl
import sys
sys.path.append('/usr/share/python-support/python-monetdb')
sys.path.append('/home/fegroffe/monetdb-stable-20080829/lib64/python2.5/site-packages')



from PyQt4 import QtSql
import MonetSQLdb



class QSqlMonetdbDriver(QtSql.QSqlDriver):
    def __init__(self):
        pass

    def hasFeature(self, DriverFeature):
        return False
    
    def open(self, db, user, password, host, port, options):
        return False
    
    def close(self):
        pass
    
    def createResult(self):
        return QSqlMonetdbResult(self)




class QSqlMonetdbResult(QtSql.QSqlResult):
     def __init__(self, driver):
         QtSql.QSqlResult.__init__(driver)

     def data(self, index):
        return QVariant()
    
     def isNull(self, index):
        return False
    
     def reset(self, query):
        return False
    
     def fetch(self, index):
        return False
    
     def fetchFirst(self):
        return False
    
     def fetchLast(self):
        return False
    
     def size():
        return 0
    
     def numRowsAffected():
         return 0
     
     def record():
         return QtSql.QSqlRecord()
     
   
     
class QSqlDriverCreatorBase(QtSql.QSqlDriverCreatorBase):
    def createObject(self):
        return QSqlMonetdbDriver()



if __name__ == '__main__':
    QtSql.QSqlDatabase.registerSqlDriver("MonetDB",  QSqlDriverCreatorBase())
    db = QtSql.QSqlDatabase.addDatabase("MonetDB")
    
    

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
PyQt mailing list    [email protected]
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

Reply via email to