Lesen und Verwenden von abgerufenen Daten
Verfasst: Mittwoch 23. Dezember 2020, 10:25
Hallo Community
Ich habe mich in letzter Zeit mit dem Abruf und der Verwendung von Daten aus einem SQL Server beschäftigt.
Hierbei habe ich es bereits geschafft mich mit dem Server zu verbinden und mehr oder weniger die gewünschten Daten abzurufen.
Allerdings fehlt mir hierbei noch ein wenig das Verständnis dafür, wie es nach dem Abruf der Daten weiter geht.
Für den Zugriff auf die Datenbank verwende ich folgenden Code:
Um anschließend auf die Daten zuzugreifen, habe ich einerseits eine while- und andererseits eine for-Schleife ausprobiert und mir die Ergebnisse näher angeschaut.
Dabei ist mir aufgefallen, dass durch die Verwendung einer while-Schleife eine Liste mit Tuplen ausgegeben wird.
Bei der Verwendung einer for-Schleife findet die Ausgabe als einzelne Tuple untereinander statt.
Nun zu meiner eigentlichen Frage:
Ich würde gerne verschiedene Attribute aus der Tabelle abrufen, (also bspw. Spalte Nachname, Vorname, Geburtsdatum, ...) um diese Daten anschließend in numerische Werte umzuwandeln (bspw. wenn Wert Vorhanden, dann 1) und für weitere Programmschritte verwenden. Allerdings bin ich mir hierbei nicht sicher, in welcher Form eine korrekte Ausgabe stattfinden sollte und wie ich nachfolgend diese Werte verwenden kann.
Sollte ich einen SELECT-Befehl anwenden und die gewünschten Attribute alle gemeinsam abrufen, oder mehrere SELECT-Befehle anwenden und jeweils nur ein Attribut aufrufen, oder vielleicht sogar die gesamte Datenbank per SELECT * aufrufen und dann daraus die Werte extrahieren?
Zudem bin ich mir leider nicht sicher, wie ich nach der Abfrage die Werte weiter verwenden kann. Wenn ich beispielsweise wie im folgenden Code einen print Befehl nach cursor.close() verwende, bekomme ich keine Ausgabe der Werte.
Mir fehlt einfach noch die Erfahrung, wie in diesem Fall ein sinnvoller Aufbau aussieht.
Ich habe mir bisher mein Python-Wissen komplett selber mit YouTube, Udemy und Forenbeiträgen beigebracht und habe daher noch einige Lücken im Verständnis, die ich noch füllen muss.
Vielen Dank bereits für eure Unterstützung und euch allen tolle Weihnachtsfeiertage!
Liebe Grüße
Dominik

Ich habe mich in letzter Zeit mit dem Abruf und der Verwendung von Daten aus einem SQL Server beschäftigt.
Hierbei habe ich es bereits geschafft mich mit dem Server zu verbinden und mehr oder weniger die gewünschten Daten abzurufen.
Allerdings fehlt mir hierbei noch ein wenig das Verständnis dafür, wie es nach dem Abruf der Daten weiter geht.
Für den Zugriff auf die Datenbank verwende ich folgenden Code:
Code: Alles auswählen
server = 'navision.****'
database = 'SCIT17'
username = 'MDM_AI'
password = '********'
cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
cursor = cnxn.cursor()
print(cnxn)
Dabei ist mir aufgefallen, dass durch die Verwendung einer while-Schleife eine Liste mit Tuplen ausgegeben wird.
Code: Alles auswählen
cursor.execute("SELECT [Shelf No_] FROM MDM_AI$Item")
result = cursor.fetchall()
while result:
print(result)
result = cursor.fetchall()
cursor.close()
Code: Alles auswählen
[('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('', ), ('25', ), ('A1', ), ('A1', ), ('A10', ), ('A10', ), ('A11', ), ('A11', ), ('A12', ), ('A13', ), ('A14', ), ('A15', ), ('A16', ), ('A17', ), ('A2', ), ('A2', ), ('A3', ), ('A3', ), ('A4', ), ('A4', ), ('A5', ), ('A5', ), ('A6', ), ('A6', ), ('A7', ), ('A7', ), ('A8', ), ('A8', ), ('A9', ), ('A9', ), ('B1', ), ('B1-T', ), ('B2', ), ('B2-T', ), ('B3', ), ('B3-T', ), ('B4', ), ('B4-T', ), ('B5', ), ('B5-T', ), ('D1', ), ('D10', ), ('D11', ), ('D12', ), ('D13', ), ('D14', ), ('D15', ), ('D16', ), ('D17', ), ('D18', ), ('D19', ), ('D2', ), ('D20', ), ('D21', ), ('D3', ), ('D4', ), ('D5', ), ('D6', ), ('D7', ), ('D8', ), ('D9', ), ('F1', ), ('F1', ), ('F10', ), ('F10', ), ('F11', ), ('F11', ), ('F12', ), ('F13', ), ('F2', ), ('F2', ), ('F3', ), ('F3', ), ('F4', ), ('F4', ), ('F5', ), ('F5', ), ('F6', ), ('F6', ), ('F7', ), ('F7', ), ('F8', ), ('F8', ), ('F9', ), ('F9', )]
Code: Alles auswählen
cursor.execute("SELECT [Shelf No_] FROM MDM_AI$Item")
result = cursor.fetchall()
for row in result:
print(row)
result = cursor.fetchall()
cursor.close()
Code: Alles auswählen
...
('', )
('', )
('', )
('25', )
('A1', )
...
Ich würde gerne verschiedene Attribute aus der Tabelle abrufen, (also bspw. Spalte Nachname, Vorname, Geburtsdatum, ...) um diese Daten anschließend in numerische Werte umzuwandeln (bspw. wenn Wert Vorhanden, dann 1) und für weitere Programmschritte verwenden. Allerdings bin ich mir hierbei nicht sicher, in welcher Form eine korrekte Ausgabe stattfinden sollte und wie ich nachfolgend diese Werte verwenden kann.
Sollte ich einen SELECT-Befehl anwenden und die gewünschten Attribute alle gemeinsam abrufen, oder mehrere SELECT-Befehle anwenden und jeweils nur ein Attribut aufrufen, oder vielleicht sogar die gesamte Datenbank per SELECT * aufrufen und dann daraus die Werte extrahieren?
Zudem bin ich mir leider nicht sicher, wie ich nach der Abfrage die Werte weiter verwenden kann. Wenn ich beispielsweise wie im folgenden Code einen print Befehl nach cursor.close() verwende, bekomme ich keine Ausgabe der Werte.
Code: Alles auswählen
cursor.execute("SELECT [Shelf No_] FROM MDM_AI$Item")
result = cursor.fetchall()
for row in result:
print(row)
result = cursor.fetchall()
cursor.close()
print(row)
Ich habe mir bisher mein Python-Wissen komplett selber mit YouTube, Udemy und Forenbeiträgen beigebracht und habe daher noch einige Lücken im Verständnis, die ich noch füllen muss.
Vielen Dank bereits für eure Unterstützung und euch allen tolle Weihnachtsfeiertage!
Liebe Grüße
Dominik