Le PySide couche est presque 1 à 1 pour toutes les méthodes Qt en C++. Du code C++ est donné ci-dessous. Parce que la couche Qt Sql est abstraite pour le type de base de données backend, et orientée vers les interfaces Gui sur une boucle d'événement, elle n'a pas les mêmes liners disponibles que R ou d'autres langages peuvent avoir. Bien que vous pouvez le faire en quelques lignes.
De même, les méthodes de traitement des erreurs de Qt pour SQL consistent généralement à interroger la dernière erreur ou à rechercher le retour du exec
ou de l'appel open
. Les tuples ne sont pas natifs en C++, donc l'interface python n'utilise pas beaucoup de tuples.
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;
}
autre syntaxe spécifiant la requête
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);
}
La véritable puissance de l'interface Sql de Qt réside dans la facilité avec laquelle il est possible de créer une interface graphique pour représenter une base de données dans presque toutes les configurations auxquelles vous pouvez penser, et comment elle est extraite du moteur de base de données.
Même avec tout ce que dit sur la façon dont il gère Qt est appelle SQL ... il est toujours à égalité avec d'autres bibliothèques Python pour interagir avec des bases de données:
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"])
espoir qui aide.
Merci. Un modèle est-il utilisé uniquement lorsqu'il est lié à un élément de l'interface graphique? – davideps
@davideps. Non. Mais ce n'est pas aussi léger qu'une requête, il semble donc inefficace d'en créer un chaque fois que vous appelez une fonction. Si j'allais utiliser un modèle pour interroger, je sous-classerais 'QSqlTableModel' et j'ajouterais quelques méthodes (comme le' fetchall 'générique que j'ai ajouté à ma réponse). – ekhumoro
@davideps. J'ai ajouté un exemple qui utilise un modèle pour l'interrogation, et une compréhension de liste pour extraire les valeurs de la colonne. Il y a probablement des douzaines de manières d'habiller ce chat particulier ... – ekhumoro