ich benötige mal wieder euere Hilfe. Ich habe hier eine *.db - Datei bekommen und etwas Pythoncode der ein paar Maschinendaten berechnet/ausgibt. Das sollte man allerdings erweitern und dazu versuche ich gerade etwas mehr Struktur reinzubringen und den Code leserlicher zu schreiben. Ich habe allerdings nichts, das man Erfahrung in Bezug auf Datenbanken nennen könnte.
Ich zeig euch mal stark vereinfacht wie die *.db -Datei aussieht. Mit:
Code: Alles auswählen
from sqlite3 import connect
from contextlib import closing
DATABASE = "daten.db"
def main():
with closing(connect(DATABASE)) as connection:
with connection:
with closing(connection.cursor()) as cursor:
table = cursor.execute("SELECT * FROM daten;")
for table_content in table:
print(table_content)
if __name__ == '__main__':
main()
Code: Alles auswählen
('Maschine', 'Ausgänge', 'Form', 'Besonderheit', 'Antriebsart')
('Maschine A', 1, 'v', 'd,e', 'Keilriemen')
Den Code den ich bekommen habe sieht so aus:
Code: Alles auswählen
verbindung = sqlite3.connect("daten.db")
zeiger = verbindung.cursor()
zeiger.execute("SELECT * FROM daten WHERE Block=?", ('Maschine A',))
for daten in zeiger:
ausgang = daten[1] ## Anzahl der Ausgänge
Das wäre für mich vielleicht noch ok bei ein paar Indexwerten, aber es wird bis auf Index 100 zugegriffen.
Ich würde gerne die Datenbank einlesen und dann wenn ich einen Wert daraus brauche, diesen rausziehen. Ich weis nur nicht wirklich wie ich das geschickt anstellen soll.
Die erste Überlegung war, das ich eine Klasse erstelle und den Inhalt der Tabelle an sprechende Namen und 'self' binde. Aber das ist zum einen viel Schreibarbeit, ich würde immer noch den Index nutzen und wenn ich was ändern muss, ist es so unübersichtlich wie jetzt.
Ich stelle mir das wie bei einem Art Dictonary vor, das ich mit Keys auf die gewünschten Werte zugreifen kann.
Wie würdet ihr vorgehen? Wenn es sinnvoll ist, dann schreibe ich die *.db-Datei auch um. Ich möchte dass das Programm nachher so ist, das ich auch in 3 Monaten noch relativ schnell weis, was wo gemacht wird.
Ich hoffe ich habe mein Problem einigermaßen verständlich erklären können.
Vielen Dank schon einmal.
Grüße
Dennis