lcordier

SQLite database close issue

Mar 7th, 2012
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.61 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # coding=utf8
  3.  
  4. """
  5.    See: http://diotavelli.net/PyQtWiki/Removing a database
  6.         https://qt-project.org/doc/qt-4.8/qsqldatabase.html#removeDatabase
  7.         https://bugreports.qt-project.org/browse/QTBUG-1528
  8.         http://lists.trolltech.com/qt-interest/2008-04/msg00627.html
  9.  
  10.         http://sqlite.org/c3ref/finalize.html
  11. """
  12. import os
  13. import sys
  14. import shutil
  15.  
  16. from PyQt4.QtCore import *
  17. from PyQt4.QtGui import *
  18. from PyQt4.QtSql import *
  19.  
  20. import ui_mainwindow
  21.  
  22.  
  23. class MainWindow(QMainWindow, ui_mainwindow.Ui_MainWindow):
  24.     """ Main application.
  25.    """
  26.     def __init__(self, parent):
  27.         """ Initialise the MainWindow.
  28.        """
  29.         super(MainWindow, self).__init__(parent)
  30.         self.setupUi(self)
  31.        
  32.         database = QSqlDatabase.addDatabase('QSQLITE', 'payroll_connection')
  33.         database.setDatabaseName('payroll.db')
  34.         database.setConnectOptions('SQLITE_BUSY_TIMEOUT=6')
  35.         database.open()
  36.        
  37.         model = QSqlTableModel(self, database)
  38.         model.setTable('tempEarnings')
  39.         model.setEditStrategy(QSqlTableModel.OnFieldChange)
  40.         model.select()
  41.        
  42.         self.tableView.setModel(model)
  43.         self.tableView.show()
  44.  
  45.    
  46.     @pyqtSignature('')
  47.     def on_savePushButton_pressed(self):
  48.         model = self.tableView.model()
  49.         model.select()
  50.         model.submitAll()
  51.         model.query().finish()
  52.         del model
  53.  
  54.         self.tableView.setModel(None)
  55.        
  56.         database = QSqlDatabase.database('payroll_connection')
  57.         # No transactions.
  58.         commit = database.commit()
  59.         print 'commit:', commit
  60.         database.close()
  61.         print database.lastError().text()
  62.        
  63.         #driver = database.driver()
  64.         #print driver.lastError().text()
  65.         del database
  66.        
  67.         QSqlDatabase.removeDatabase('payroll_connection')
  68.         #os.remove('payroll.db')
  69.         sys.exit(1)
  70.  
  71.         #QFile.remove('payroll.db')
  72.         #shutil.copy('payroll.db.new', 'payroll.db')
  73.         #
  74.         #self.database = QSqlDatabase.addDatabase('QSQLITE', 'payroll_connection')
  75.         #self.database.setDatabaseName('payroll.db')
  76.         #self.database.setConnectOptions('SQLITE_BUSY_TIMEOUT=6')
  77.         #self.database.open()
  78.         #
  79.         #model = QSqlTableModel(self, self.database)
  80.         #model.setTable('tempEarnings')
  81.         #self.tableView.setModel(model)
  82.         #model.select()
  83.  
  84.  
  85. if __name__ == '__main__':
  86.    
  87.     app = QApplication(sys.argv)
  88.     form = MainWindow(None)
  89.     form.show() #Maximized()
  90.     sys.exit(app.exec_())
Advertisement
Add Comment
Please, Sign In to add comment