Ich schrieb etwas sehr ähnliches für ein Projekt, das ich tat, wo ich im Grunde eine Datenbankschnittstelle in der GUI hatte, und ich erlaubte dem Benutzer, Einträge in der Datenbank zu bearbeiten und hinzuzufügen, ohne in die MySql Workbench gehen zu müssen.
Sie benötigen zwei Funktionen, um mit Ihrer Datenbank zu interagieren, eine zum Abrufen der Einträge und eine zum Ausführen der Änderungen.
Dies ist ein Code, der Informationen aus der Datenbank mithilfe von SqlAlchemy abrufen wird.
def get_info():
sql = text('SELECT id, '
'serial_number, '
'weight_name, '
'units, '
'nominal, '
'customer_name, '
'density, '
'density_uncert , '
'volumetric_exp, '
'comment '
'FROM weights_external '
'ORDER BY id ')
return self.engine.execute(sql).fetchall()
Dies wählt die ID, Seriennummer, Einheiten usw. aus der Tabelle "weights_external" genannt, ist es von id Bestellung. self.engine.execute(sql).fetchall()
gibt einen Generator zurück (ich denke, es könnte eine Liste sein, aber ich erinnere mich nicht von ganz oben, tut mir leid!), Die man durchlaufen kann und alle Ergebnisse bekommt. In diesem Beispiel erhalte ich 10 Spalten aus dieser Tabelle. Wenn die Tabelle 100 Zeilen hätte, würde die Funktion eine Liste mit der Länge 100 zurückgeben, und jedes Element dieser Liste wäre eine Liste mit der Länge 10, die jeweils die Informationen aus einer Spalte enthält.
Ich speicher diese Länge-100-Liste in einer Variablen, und ich verwende diese Variable, um ein QTableWidget für die GUI aufzufüllen.
Ich habe eine separate Schaltfläche, um ein Unterfenster zu öffnen, mit dem der Benutzer eine Zeile hinzufügen kann. Der Code dafür ist sehr ähnlich zu get_info()
, außer dass Sie jetzt aktualisieren oder in eine Tabelle einfügen (Sie können dies auf SqlAlchemy oder MySql Dokumentation nachschlagen). Grundsätzlich werden Sie etwas Ähnliches wie dieses:
def push_data(self, data):
table = self.weights_external.insert()
self.engine.execute(table.values(id=data['id'],
serial_number=data['serial_num'],
...
comment=data['comment']))
ich das Zeug in der Mitte links aus aus Gründen der Zeit und Raum, aber diese wenigen Code-Schnipsel sollte Ihnen ermöglichen, Daten aus der Datenbank abgerufen werden, setzen es in ein QTableWidget oder ein anderes QObject und ermöglicht dem Benutzer, diese Daten mit einem Knopfdruck zu ändern. Wenn Sie Fragen haben, bitte Kommentar!
Sie haben eine Lösung beschrieben, die Sie mit extremen Einschränkungen benötigen, ohne wirklich zu bestimmen, was Sie erreichen möchten. Wenn Sie Daten in MySQL haben, können Sie mithilfe von SQL-Anweisungen extrahieren, was benötigt wird. Sie brauchen nicht ständig alle Daten, oder wenn Sie das tun, warum sollten Sie sie in eine Datenbank einfügen? –
es ist auch für den Zugriff durch einen Web-Client gedacht, deshalb habe ich beschlossen, die Informationen in einer Datenbank zu speichern, ich muss auch darauf zugreifen, um Rechnungen zu speichern und zu drucken, sobald der Job abgeschlossen ist.ich versuche, einen Klienten zu machen, der Ihnen erlaubt, Daten in einer Datenbank mit einem glatten ui hinzuzufügen, anzusehen und zu redigieren, die Methode, die ich dies erreichen muss, schließt gegenwärtig ein Baum basiertes visuelles Element in PyQt4 ein, um dem Benutzer zu erlauben, durch mehrere Stücke zu archivieren Informationen und haben sie in ein paar einfachen Schritten zur Verfügung. –
Zeigen Sie den Code, der Ihnen Probleme gibt –