summaryrefslogtreecommitdiffstats
path: root/python/pyqt/examples3/SQL/runsqlex.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/pyqt/examples3/SQL/runsqlex.py')
-rwxr-xr-xpython/pyqt/examples3/SQL/runsqlex.py151
1 files changed, 0 insertions, 151 deletions
diff --git a/python/pyqt/examples3/SQL/runsqlex.py b/python/pyqt/examples3/SQL/runsqlex.py
deleted file mode 100755
index 7f2afa71..00000000
--- a/python/pyqt/examples3/SQL/runsqlex.py
+++ /dev/null
@@ -1,151 +0,0 @@
-#!/usr/bin/env python
-
-import sys
-from qt import *
-from qtsql import *
-
-from sqlex import SqlEx
-from connect import ConnectDialog
-
-from dbpar import *
-
-TRUE = 1
-FALSE = 0
-
-def showError(err, parent):
- errStr = QString("The database reported an error:\n\n")
- if not err.databaseText().isEmpty():
- errStr.append(err.databaseText())
- errStr.append("\n")
- if not err.driverText().isEmpty():
- errStr.append(err.driverText())
- errStr.append("\n")
- QMessageBox.warning(parent, "Error", errStr)
-
-class CustomSqlCursor(QSqlCursor):
- def __init__(self, query = None, autopopulate = TRUE, db = None):
- QSqlCursor.__init__(self, None, autopopulate, db)
- self.execQuery(query)
- if self.isSelect() and autopopulate:
- fields = self.driver().recordInfo(self)
- for f in fields:
- self.append(f)
- self.setMode(QSqlCursor.ReadOnly)
-
- def select(self, filter, sort = QSqlIndex()):
- return self.execQuery(self.lastQuery())
-
- def primaryIndex(self, prime = TRUE):
- return QSqlIndex()
-
- def insert(self, invalidate = TRUE):
- return FALSE
-
- def update(self, invalidate = TRUE):
- return FALSE
-
- def delRecords(self, invalidate = TRUE):
- return FALSE
-
- def setName(self, name, autopopulate = TRUE):
- return
-
-
-class MainWindow(SqlEx):
- def __init__(self,parent = None,name = None,fl = 0):
- SqlEx.__init__(self,parent,name,fl)
- self.conDiag = ConnectDialog(self, "Connection Dialog", TRUE)
- self.firstconn = TRUE
-
- def dbConnect(self):
- if self.firstconn:
- self.firstconn = FALSE
- self.conDiag.editUsername.setText(DB_USERNAME)
- self.conDiag.editPassword.setText(DB_PASSWORD)
- self.conDiag.editHostname.setText(DB_HOSTNAMES[0])
- self.conDiag.editDatabase.setText(DB_DATABASES[0])
- for i in range(self.conDiag.comboDriver.count()):
- if str(self.conDiag.comboDriver.text(i)) == DB_DRIVER:
- self.conDiag.comboDriver.setCurrentItem(i)
- break
- if self.conDiag.exec_loop() != QDialog.Accepted:
- return
- if self.dt.sqlCursor():
- self.dt.setSqlCursor()
-
- # close old connection (if any)
- if QSqlDatabase.contains("SqlEx"):
- oldDb = QSqlDatabase.database("SqlEx")
- oldDb.close()
- QSqlDatabase.removeDatabase("SqlEx")
-
- # open the new connection
- db = QSqlDatabase.addDatabase(self.conDiag.comboDriver.currentText(), "SqlEx")
- if not db:
- QMessageBox.warning(self, "Error", "Could not open database")
- return
-
- db.setHostName(self.conDiag.editHostname.text())
- db.setDatabaseName(self.conDiag.editDatabase.text())
- db.setPort(self.conDiag.portSpinBox.value())
- if not db.open(self.conDiag.editUsername.text(),
- self.conDiag.editPassword.text()):
- showError(db.lastError(), self)
- return
-
- self.lbl.setText("Double-Click on a table-name to view the contents")
- self.lv.clear()
-
- tables = db.tables()
- for t in tables:
- lvi = QListViewItem(self.lv, t)
- fields = db.recordInfo(t)
- for f in fields:
- req = "?"
- if f.isRequired() > 0:
- req = "Yes"
- elif f.isRequired() == 0:
- req = "No"
- fi = QListViewItem(lvi, f.name(), QVariant.typeToName(f.type()), req)
- lvi.insertItem(fi)
- self.lv.insertItem(lvi)
-
- self.submitBtn.setEnabled(TRUE)
-
- def execQuery(self):
- cursor = CustomSqlCursor(self.te.text(), TRUE,
- QSqlDatabase.database("SqlEx", TRUE))
- if cursor.isSelect():
- self.dt.setSqlCursor(cursor, TRUE, TRUE)
- self.dt.refresh()
- txt = QString("Query OK")
- if cursor.size() >= 0:
- txt.append(", returned rows: %s" % cursor.size())
- self.lbl.setText(txt)
- else:
- if not cursor.isActive():
- # an error occured
- showError(cursor.lastError(), self)
- else:
- self.lbl.setText("Query OK, affected rows: %s" %
- cursor.numRowsAffected())
-
- def showTable(self, item):
- i = item.parent()
- if not i:
- i = item
- cursor = QSqlCursor(i.text(0), TRUE, QSqlDatabase.database("SqlEx", TRUE))
- self.dt.setSqlCursor(cursor, TRUE, TRUE)
- self.dt.setSort(cursor.primaryIndex())
- self.dt.refresh(QDataTable.RefreshAll)
- self.lbl.setText("Displaying table %s" % i.text(0))
-
-
-if __name__ == "__main__":
- a = QApplication(sys.argv)
- QObject.connect(a,SIGNAL("lastWindowClosed()"),a,SLOT("quit()"))
- w = MainWindow()
- a.setMainWidget(w)
- w.show()
- a.exec_loop()
-