对于 C++ 中的所有 Qt 方法,PySide 层几乎是一对一的。下面给出了一些 C++ 代码。
因为 Qt Sql 层是针对后端数据库类型进行抽象的,并且面向事件循环上的 Gui 接口,所以它没有 R 或其他语言可能拥有的相同的可用衬里。虽然你可以在几行内完成。
另外,Qt 对 SQL 的错误处理方法通常是通过查询最后一个错误或查看exec 或open 调用的返回。元组在 C++ 中不是原生的,因此 python 接口不会大量使用元组。
http://doc.qt.io/qt-4.8/sql-sqlstatements.html
http://doc.qt.io/qt-4.8/qsqltablemodel.html#details
QSqlTableModel model;
model.setTable("employee");
model.setFilter("salary > 50000");
model.setSort(2, Qt::DescendingOrder);
model.select();
for (int i = 0; i < model.rowCount(); ++i) {
QString name = model.record(i).value("name").toString();
int salary = model.record(i).value("salary").toInt();
qDebug() << name << salary;
}
指定查询的替代语法
QSqlQueryModel model;
model.setQuery("SELECT * FROM employee");
int salary = model.record(4).value("salary").toInt();
http://doc.qt.io/qt-4.8/qsqlresult.html#size
QSqlQuery query("SELECT country FROM artist");
while (query.next()) {
QString country = query.value(0).toString();
doSomething(country);
}
Qt 的 Sql 接口的真正强大之处在于它可以很容易地制作一个 GUI 来以您能想到的几乎任何类型的配置来表示数据库,以及它是如何从数据库引擎中抽象出来的。
即使说了这么多关于 Qt 如何处理它的 SQL 调用......它仍然与其他用于与数据库交互的 Python 库相提并论:
How to retrieve SQL result column value using column name in Python?
cursor = conn.cursor(MySQLdb.cursors.DictCursor)
cursor.execute("SELECT name, category FROM animal")
result_set = cursor.fetchall()
for row in result_set:
print "%s, %s" % (row["name"], row["category"])
希望对您有所帮助。