diff options
Diffstat (limited to 'sources/pyside2/doc/codesnippets/doc/src/snippets/sqldatabase/sqldatabase.py')
-rw-r--r-- | sources/pyside2/doc/codesnippets/doc/src/snippets/sqldatabase/sqldatabase.py | 489 |
1 files changed, 0 insertions, 489 deletions
diff --git a/sources/pyside2/doc/codesnippets/doc/src/snippets/sqldatabase/sqldatabase.py b/sources/pyside2/doc/codesnippets/doc/src/snippets/sqldatabase/sqldatabase.py deleted file mode 100644 index 7c28cf5e6..000000000 --- a/sources/pyside2/doc/codesnippets/doc/src/snippets/sqldatabase/sqldatabase.py +++ /dev/null @@ -1,489 +0,0 @@ -############################################################################ -## -## Copyright (C) 2016 The Qt Company Ltd. -## Contact: https://www.qt.io/licensing/ -## -## This file is part of the examples of Qt for Python. -## -## $QT_BEGIN_LICENSE:BSD$ -## Commercial License Usage -## Licensees holding valid commercial Qt licenses may use this file in -## accordance with the commercial license agreement provided with the -## Software or, alternatively, in accordance with the terms contained in -## a written agreement between you and The Qt Company. For licensing terms -## and conditions see https://www.qt.io/terms-conditions. For further -## information use the contact form at https://www.qt.io/contact-us. -## -## BSD License Usage -## Alternatively, you may use this file under the terms of the BSD license -## as follows: -## -## "Redistribution and use in source and binary forms, with or without -## modification, are permitted provided that the following conditions are -## met: -## * Redistributions of source code must retain the above copyright -## notice, this list of conditions and the following disclaimer. -## * Redistributions in binary form must reproduce the above copyright -## notice, this list of conditions and the following disclaimer in -## the documentation and/or other materials provided with the -## distribution. -## * Neither the name of The Qt Company Ltd nor the names of its -## contributors may be used to endorse or promote products derived -## from this software without specific prior written permission. -## -## -## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -## -## $QT_END_LICENSE$ -## -############################################################################ - -from PySide2.QtGui import * -from PySide2.QtSql import * - - -def tr(text): - return QApplication.translate(text, text) - -def QSqlDatabase_snippets(): -//! [0] - db = QSqlDatabase.addDatabase("QPSQL") - db.setHostName("acidalia") - db.setDatabaseName("customdb") - db.setUserName("mojito") - db.setPassword("J0a1m8") - ok = db.open() -//! [0] - -//! [1] - db = QSqlDatabase.database() -//! [1] - -def QSqlField_snippets(): -//! [2] - field = QSqlField("age", QVariant.Int) - field.setValue(QPixmap()) # WRONG -//! [2] - -//! [3] - field = QSqlField("age", QVariant.Int) - field.setValue(str(123)) # casts str to int -//! [3] - -//! [4] - query = QSqlQuery() -//! [4] //! [5] - record = query.record() -//! [5] //! [6] - field = record.field("country") -//! [6] - -def doSomething(str): - pass - -def QSqlQuery_snippets(): - # typical loop -//! [7] - query = QSqlQuery("SELECT country FROM artist") - while query.next(): - country = query.value(0) - doSomething(country) -//! [7] - - - # field index lookup -//! [8] - query = QSqlQuery("SELECT * FROM artist") - fieldNo = query.record().indexOf("country") - while query.next(): - country = query.value(fieldNo) - doSomething(country) -//! [8] - - # named with named -//! [9] - query = QSqlQuery() - query.prepare("INSERT INTO person (id, forename, surname) " - "VALUES (:id, :forename, :surname)") - query.bindValue(":id", 1001) - query.bindValue(":forename", "Bart") - query.bindValue(":surname", "Simpson") - query.exec_() -//! [9] - - # positional with named -//! [10] - query = QSqlQuery() - query.prepare("INSERT INTO person (id, forename, surname) " - "VALUES (:id, :forename, :surname)") - query.bindValue(0, 1001) - query.bindValue(1, "Bart") - query.bindValue(2, "Simpson") - query.exec_() -//! [10] - - # positional 1 -//! [11] - query = QSqlQuery() - query.prepare("INSERT INTO person (id, forename, surname) " - "VALUES (?, ?, ?)") - query.bindValue(0, 1001) - query.bindValue(1, "Bart") - query.bindValue(2, "Simpson") - query.exec_() -//! [11] - - # positional 2 -//! [12] - query = QSqlQuery() - query.prepare("INSERT INTO person (id, forename, surname) " - "VALUES (?, ?, ?)") - query.addBindValue(1001) - query.addBindValue("Bart") - query.addBindValue("Simpson") - query.exec_() -//! [12] - - # stored -//! [13] - query = QSqlQuery() - query.prepare("CALL AsciiToInt(?, ?)") - query.bindValue(0, "A") - query.bindValue(1, 0, QSql.Out) - query.exec_() - i = query.boundValue(1) # i is 65 -//! [13] - - query = QSqlQuery() - - # examine with named binding -//! [14] - i = query.boundValues() - while i.hasNext(): - i.next() - print i.key(), ": ", i.value() -//! [14] - - # examine with positional binding -//! [15] - list_ = query.boundValues().values() - for item in list: - print item -//! [15] - -def QSqlQueryModel_snippets(): - -//! [16] - model = QSqlQueryModel() - model.setQuery("SELECT name, salary FROM employee") - model.setHeaderData(0, Qt.Horizontal, tr("Name")) - model.setHeaderData(1, Qt.Horizontal, tr("Salary")) - -//! [17] - view = QTableView() -//! [17] //! [18] - view.setModel(model) -//! [18] //! [19] - view.show() -//! [16] //! [19] //! [20] - view.setEditTriggers(QAbstractItemView.NoEditTriggers) -//! [20] - -//! [21] - model = QSqlQueryModel() - model.setQuery("SELECT * FROM employee") - salary = model.record(4).value("salary") -//! [21] - -//! [22] - salary = model.data(model.index(4, 2)) -//! [22] - - for row in range(model.rowCount()): - for (col in range(model.columnCount())): - print model.data(model.index(row, col)) - - -class MyModel(QSqlQueryModel) - m_specialColumnNo = 0 - def data(item, role): -//! [23] - if item.column() == self.m_specialColumnNo: - # handle column separately - pass - - return QSqlQueryModel.data(item, role) - -//! [23] - - -def QSqlTableModel_snippets(): - -//! [24] - model = QSqlTableModel() - model.setTable("employee") - model.setEditStrategy(QSqlTableModel.OnManualSubmit) - model.select() - model.removeColumn(0) # don't show the ID - model.setHeaderData(0, Qt.Horizontal, tr("Name")) - model.setHeaderData(1, Qt.Horizontal, tr("Salary")) - - view = QTableView() - view.setModel(model) - view.show() -//! [24] - - -//! [25] - model = QSqlTableModel() - model.setTable("employee") - name = model.record(4).value("name") -//! [25] - -def sql_intro_snippets(): - -//! [26] - db = QSqlDatabase.addDatabase("QMYSQL") - db.setHostName("bigblue") - db.setDatabaseName("flightdb") - db.setUserName("acarlson") - db.setPassword("1uTbSbAs") - ok = db.open() -//! [26] - -//! [27] - firstDB = QSqlDatabase.addDatabase("QMYSQL", "first") - secondDB = QSqlDatabase.addDatabase("QMYSQL", "second") -//! [27] - -//! [28] - defaultDB = QSqlDatabase.database() -//! [28] //! [29] - firstDB = QSqlDatabase.database("first") -//! [29] //! [30] - secondDB = QSqlDatabase.database("second") -//! [30] - - # SELECT1 -//! [31] - query = QSqlQuery() - query.exec_("SELECT name, salary FROM employee WHERE salary > 50000") -//! [31] - -//! [32] - while query.next(): - name = query.value(0) - salary = query.value(1) - print name, salary -//! [32] - - # FEATURE -//! [33] - query = QSqlQuery() - query.exec_("SELECT name, salary FROM employee WHERE salary > 50000") - - defaultDB = QSqlDatabase.database() - if defaultDB.driver().hasFeature(QSqlDriver.QuerySize): - numRows = query.size() - else: - # self can be very slow - query.last() - numRows = query.at() + 1 -//! [33] - - # INSERT1 -//! [34] - query = QSqlQuery() - query.exec_("INSERT INTO employee (id, name, salary) " - "VALUES (1001, 'Thad Beaumont', 65000)") -//! [34] - - # NAMED BINDING -//! [35] - query = QSqlQuery() - query.prepare("INSERT INTO employee (id, name, salary) " - "VALUES (:id, :name, :salary)") - query.bindValue(":id", 1001) - query.bindValue(":name", "Thad Beaumont") - query.bindValue(":salary", 65000) - query.exec_() -//! [35] - - # POSITIONAL BINDING -//! [36] - query = QSqlQuery() - query.prepare("INSERT INTO employee (id, name, salary) " - "VALUES (?, ?, ?)") - query.addBindValue(1001) - query.addBindValue("Thad Beaumont") - query.addBindValue(65000) - query.exec_() -//! [36] - - # UPDATE1 -//! [37] - query = QSqlQuery() - query.exec_("UPDATE employee SET salary = 70000 WHERE id = 1003") -//! [37] - - # DELETE1 -//! [38] - query = QSqlQuery() - query.exec_("DELETE FROM employee WHERE id = 1007") -//! [38] - - # TRANSACTION -//! [39] - QSqlDatabase.database().transaction() - query = QSqlQuery() - query.exec_("SELECT id FROM employee WHERE name = 'Torild Halvorsen'") - if query.next(): - employeeId = query.value(0) - query.exec_("INSERT INTO project (id, name, ownerid) " - "VALUES (201, 'Manhattan Project', " - + str(employeeId) + ')') - - QSqlDatabase.database().commit() -//! [39] - - # SQLQUERYMODEL1 -//! [40] - model = QSqlQueryModel() - model.setQuery("SELECT * FROM employee") - - for i in range(model.rowCount()): - _id = model.record(i).value("id") - name = model.record(i).value("name") - print _id, name - -//! [40] - } - - { - # SQLTABLEMODEL1 -//! [41] - model = QSqlTableModel() - model.setTable("employee") - model.setFilter("salary > 50000") - model.setSort(2, Qt.DescendingOrder) - model.select() - - for i in range(model.rowCount()): - name = model.record(i).value("name") - salary = model.record(i).value("salary") - print "%s: %d" % (name, salary) - -//! [41] - - # SQLTABLEMODEL2 - model = QSqlTableModel() - model.setTable("employee") - -//! [42] - for i in range(model.rowCount()): - record = model.record(i) - salary = record.value("salary") - salary *= 1.1 - record.setValue("salary", salary) - model.setRecord(i, record) - - model.submitAll() -//! [42] - - # SQLTABLEMODEL3 - row = 1 - column = 2 -//! [43] - model.setData(model.index(row, column), 75000) - model.submitAll() -//! [43] - - # SQLTABLEMODEL4 -//! [44] - model.insertRows(row, 1) - model.setData(model.index(row, 0), 1013) - model.setData(model.index(row, 1), "Peter Gordon") - model.setData(model.index(row, 2), 68500) - model.submitAll() -//! [44] - -//! [45] - model.removeRows(row, 5) -//! [45] - -//! [46] - model.submitAll() -//! [46] - -//! [47] -class XyzResult(QSqlResult): - def __init__(driver): - QSqlResult.__init__(self, driver) - pass - - def data(self, index): - return QVariant() - - def isNull(self, index): - return False - - def reset(self, query): - return False - - def fetch(self, index): - return False - - def fetchFirst(self): - return False - - def fetchLast(self): - return False - - def size(self): - return 0 - - def numRowsAffected(self): - return 0 - - def record(self): - return QSqlRecord() - -//! [47] - -//! [48] -class XyzDriver(QSqlDriver) - def hasFeature(self, feature): - return False - - def open(self, db, user, password, host, port, options): - return False - - def close(self): - pass - - def createResult(self): - return XyzResult(self) - -//! [48] - -def main(): - app = QApplication([]) - - QSqlDatabase_snippets() - QSqlField_snippets() - QSqlQuery_snippets() - QSqlQueryModel_snippets() - QSqlTableModel_snippets() - - driver = XyzDriver() - result = XyzResult(driver) |