我最近开始发现需要从 _ _mysql模块更改为PyQt的QSql但不知道从哪里开始。从数据库中读取我想要做的所有事情(现在)并打印结果。这是我得到的最远,但我一直从query.exec_()函数返回“驱动程序未加载驱动程序未加载”错误。
请帮忙!
db = QSqlDatabase.addDatabase("QMYSQL")
db.setHostName ( db_host )
db.setUserName ( db_user )
db.setPassword ( db_passwd )
db.setDatabaseName ( db_db )
db.setPort ( db_port )
db.setConnectOptions("CLIENT_SSL=1;CLIENT_IGNORE_SPACE=1")
db.open()
defaultDB = QSqlDatabase.database()
query = QSqlQuery("SELECT * FROM Users")
qe = query.exec_()
print "query exec" , query.exec_()
if not qe: # if error
print QSqlQuery.lastError( query ).text()
else: # else display returned values
while query.next():
print "query value" , query.value(0).toString()
db.close()
答案 0 :(得分:7)
AAAAHH !!!这总是会发生!坐了一天的问题,最后决定发布并询问它,并在发布问题后约30分钟,你找到了解决方案!
对于那些感兴趣的人,我遇到了与this guy相同的问题。
基本上你必须在执行sql代码之前创建一个QApplication实例......即
# this little monkey has to be here
app = QApplication(sys.argv)
# rest of the code
db = QSqlDatabase.addDatabase("QMYSQL")
db.setHostName ( db_host )
db.setUserName ( db_user )
db.setPassword ( db_passwd )
db.setDatabaseName ( db_db )
db.setPort ( db_port )
db.setConnectOptions("CLIENT_SSL=1;CLIENT_IGNORE_SPACE=1")
db.open()
defaultDB = QSqlDatabase.database()
query = QSqlQuery("SELECT * FROM Users")
qe = query.exec_()
print "query exec" , query.exec_()
if not qe: # if error
print QSqlQuery.lastError( query ).text()
else: # else display returned values
while query.next():
print "query value" , query.value(0).toString()
db.close()