from PyQt4.QtSql import *
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import sys
def createConnection(driverType, databaseName, hostName=None, userName=None, password=None):
db = QSqlDatabase.addDatabase(driverType);
db.setDatabaseName(databaseName)
db.setHostName(hostName);
db.setUserName(userName);
db.setPassword(password)
if (db.open() == False):
QMessageBox.critical(None, "Database Error", db.lastError().text())
sys.exit(1)
return db
if __name__ == '__main__':
app = QApplication(sys.argv)
con = createConnection('QSQLITE', "testdatabase.db")
qry = QSqlQuery()
# qry.setForwardOnly(True)
qry.exec_("CREATE TABLE IF NOT EXISTS names (id INTEGER UNIQUE PRIMARY KEY, firstname VARCHAR(30), lastname VARCHAR(30))");
qry.exec_("INSERT INTO names (id, firstname, lastname) VALUES (1, 'John', 'Doe')");
qry.exec_("INSERT INTO names (id, firstname, lastname) VALUES (2, 'Jane', 'Doe')");
qry.exec_("INSERT INTO names (id, firstname, lastname) VALUES (3, 'James', 'Doe')");
qry.exec_("INSERT INTO names (id, firstname, lastname) VALUES (4, 'Judy', 'Doe')");
qry.exec_("INSERT INTO names (id, firstname, lastname) VALUES (5, 'Richard', 'Roe')");
qry.exec_("INSERT INTO names (id, firstname, lastname) VALUES (6, 'Jane', 'Roe')");
qry.exec_("INSERT INTO names (id, firstname, lastname) VALUES (7, 'John', 'Noakes')");
qry.exec_("INSERT INTO names (id, firstname, lastname) VALUES (8, 'Donna', 'Doe')");
qry.exec_("INSERT INTO names (id, firstname, lastname) VALUES (9, 'Ralph', 'Roe')");
qry.exec_("CREATE TABLE IF NOT EXISTS salaries (id INTEGER UNIQUE PRIMARY KEY, annual INTEGER)");
qry.exec_("INSERT INTO salaries (id, annual) VALUES (1, 1000)")
qry.exec_("INSERT INTO salaries (id, annual) VALUES (2, 900)");
qry.exec_("INSERT INTO salaries (id, annual) VALUES (3, 900)");
qry.exec_("INSERT INTO salaries (id, annual) VALUES (5, 1100)");
qry.exec_("INSERT INTO salaries (id, annual) VALUES (6, 1000)");
qry.exec_("INSERT INTO salaries (id, annual) VALUES (8, 1200)");
qry.exec_("INSERT INTO salaries (id, annual) VALUES (9, 1200)");
model = QSqlRelationalTableModel()
model.setTable("names" )
model.setRelation(0, QSqlRelation( "salaries", "id", "annual" ) )
model.setEditStrategy(QSqlTableModel.OnFieldChange)
model.select()
print(model.editStrategy())
view = QTableView();
view.setModel(model )
view.show();
sys.exit(app.exec_())