2011-09-13 2 views
3

저는 최근에 _ _mysql 모듈을 PyQt의 QSql로 바꿀 필요가 있음을 알았지 만 어디서부터 시작해야하는지 전혀 알지 못합니다. 내가하고 싶은 (지금은) 데이터베이스에서 읽고 결과를 출력합니다. 이것은 내가 얻은 것 중 가장 멀리 있지만 계속해서 "드라이버가로드되지 않았습니다.로드되지 않은 드라이버"오류가 query.exec_() 함수에서 반환됩니다.QSql 데이터베이스 연결 및 읽기 예제? - 드라이버가로드되지 않았습니다.

도와주세요!

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() 

답변

6

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()