PySide:あなたが行が選択されていたら、その後、照会のためのモデルを使用している場合
は、あなたが列の値を引き出すために、リストの内包表記を使用することができますレイヤーはC++のすべてのQtメソッドでほぼ1対1です。いくつかのC++コードを以下に示します。
Qt Sqlレイヤは、バックエンドデータベースタイプ用に抽象化され、イベントループでGuiインターフェイスに対応しているため、Rや他の言語で使用できるものと同じライナーはありません。あなたはいくつかの行でそれを行うことができますが。
また、SQLのQtのエラー処理方法は、通常、最後のエラーを照会するか、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は、それをどのように処理するかについて言ったことすべてと
は、それはまだデータベースと対話するための他のPythonライブラリと同等のです... SQL呼び出しです:助け
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"])
希望。
ありがとうございます。モデルはGUI要素に結合されている場合にのみ使用されますか? – davideps
@davideps。いいえ。しかし、クエリのように軽量ではないので、関数を呼び出すたびに作成するのは非効率です。モデルをクエリに使うつもりなら、QSqlTableModelをサブクラス化し、いくつかのメソッドを追加します(私の答えに追加した汎用のfetchallのように)。 – ekhumoro
@davideps。私は、クエリにモデルを使用する例と列の値を引き出すためのリストの理解を追加しました。この特定の猫をスキンする方法はおそらく数十種類あります。 – ekhumoro