2016-07-04 9 views
1

Ich arbeite an einer Software, die Clients und die Jobs, die wir für sie erledigen, in einer MySQL-Datenbank speichert, damit die Benutzeroberfläche so funktioniert, wie ich es möchte Ich brauche alle Datenbanken oder Tabellen in einem Array, um später zu referenzieren. zum BeispielWie kann ich MySQL-Datenbanken in einem Python-Array auflisten?

MysqlTables = [customers,clients,jobs] 
MysqlTables[0] = [joshua,alex,james] 
MysqlTables[0][0] = ["computer issue"] 

diese Weise kann ich verweisen kann und zeigt alle Informationen im Frontend UI andere Lösung eine visuelle Navigation in PyQt4 Anzeige des Baum-Widget mit würde

ich bin noch ziemlich neu geschätzt werden MySQL mit python zu verwenden und ist einige Schwierigkeiten zu verstehen, alles hat, habe ich das gefunden, aber ich es von

How do I list all tables in all databases in SQL Server in a single result set?

, was ich zeige nicht verstehen kann davon möchte ich vielleicht etwas Ähnliches machen, aber ich habe keine Ahnung, wie ich es umsetzen soll und es wird nicht die Jobinformationen des Kunden enthalten.

+0

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? –

+0

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. –

+0

Zeigen Sie den Code, der Ihnen Probleme gibt –

Antwort

0

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!

Verwandte Themen