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