2017-04-19 2 views
0

j'ai une fonction comme ci-dessousquery_exec (SELECT * FROM myTable) échoue sur pyqt5

def updateExpenseEntryToDb (self): 
    self.day = self.line_edit1.text() 
    self.category = self.line_edit2.text() 
    self.amount = self.line_edit3.text() 

    db = QSqlDatabase.addDatabase('QSQLITE') 
    db.setDatabaseName('expenses.db') 
    db.open() 
    query = QSqlQuery() 
    query.exec_("create table expense(date DATE primary key, " 
    "category varchar(20), amount varchar(20))") 
    query.exec_("insert into expense (date,category,amount) values('%s','%s','%s')" % (self.day, self.category, self.amount)) 
    db.close() 

    db1 = QSqlDatabase.addDatabase('QSQLITE') 
    db1.setDatabaseName('expenses.db') 
    db1.open() 
    query1 = QSqlQuery() 
    query1.exec_("SELECT date, category, amount FROM expenses.expense") 

    while (query1.next()): 
     extractedDate = query1.value(0).toString() 
     extractedcategory = query1.value(1).toString() 
     extractedAmount = query1.value(2).toString() 
     self.line_edit1.setText(extractedDate) 
     self.line_edit2.setText(extractedcategory) 
     self.line_edit3.setText(extractedAmount)   
    db1.close() 

Insertion de valeurs dans DB fonctionne mais pas la récupération des informations du DB. Qu'est-ce que je fais mal ? semble que la requête select ne récupère rien du tout

Répondre

0

Mettez query.first() avant while (query1.next()): Mais, la première ligne ne sera pas utilisée.

Mieux:

query.first() 
while query.isValid(): 
    # Your Code 
    query.next()