ich sitze vor einen Problem und weiß leider nicht wie ich es lösen kann ...
Programmdaten: Python 2.7.12 (32-Bit), pyodbc (32-Bit), Windows 7 enterprise (64-Bit), Access (32-Bit), Excel (32-Bit)
Ich würde gerne einen dynamischen Select-Befehl (Schleife) generieren, der das Abfrageergebniss in einer Variable speichert. Im Anschluss werde ich einige Berechnungen machen dafür werden die Daten transformiert vor der Berechnung und wieder rücktransformiert nach der Berechnung. Das Ergebniss soll mit den gleichen Relation wie für den fetchall-Befehl zurück geschrieben werden.
Meine Daten sind über ein gewisse Zeitfenster (Jahre 2000-2016) verteilt und Stellen Umsatzmengen dar. Ich würde gerne mit den fetchall Befehl alle Jahre einspielen mit gewissen Parametern und dann eine Berechnung machen und diese Daten in eine anderen Spalte, aber gleiche Tabelle und Zeile zurückspielen -> sprich ich habe einen eindeutigen primary key.
Mit diesem Code hole ich mir den Index für mein Where-Statement
Code: Alles auswählen
import openpyxl
wb = openpyxl.load_workbook('C:\XXX\Beisspieldatensatz.xlsx')
sheet1 = wb.get_sheet_by_name('A')
for i in range(1,72,1):
print(sheet1.cell (row=i, column=1).value)
sheet2 = wb.get_sheet_by_name('B')
for i in range(1,52,1):
print(sheet2.cell (row=i, column=1).value)
Code: Alles auswählen
import pyodbc as py
#Connection string to access
cnxn = py.connect("DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};UID=admin;UserCommitSync=Yes#;Threads=3;SafeTransactions=0;PageTimeout=5;MaxScanRows=8;MaxBufferSize=2048;FIL={MS Access};DriverId=25;DefaultDir=C:\XXX\Desktop;DBQ=C:\XXX\Desktop\DatabaseMA_Test.mdb")
cursor = cnxn.cursor()
#Load Data out of MS Access
cursor.execute(
"""
SELECT Y,F,D, Primary Key)
FROM [TW-DS]
WHERE A = ?
and B= ?
""",
['Blub', 'Sepp']) hier würde ich gerne meine Variablen Daten einspielen lassen
rows = cursor.fetchall()
print(rows)
Dafür muss ich die Access-Daten transformieren mit Hilfe von panda (Hab ich aber noch keine code)
Und in desem Schritt will ich die Daten wieder zurück spielen anhand des Primary keys
Code: Alles auswählen
import pyodbc as py
#Connection string to access
cnxn = py.connect("DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};UID=admin;UserCommitSync=Yes#;Threads=3;SafeTransactions=0;PageTimeout=5;MaxScanRows=8;MaxBufferSize=2048;FIL={MS Access};DriverId=25;DefaultDir=C:\XXX\Desktop;DBQ=C:\XXX\Desktop\DatabaseMA_Test.mdb")
cursor = cnxn.cursor()
#Write data back in MS Access
cursor.execute(
"""insert into [TW-DS]
Where Primary Key = XX Hier müsste der Key dynamisch eingespielt werden
(
Wert,
Menge
)
values
(
X1,
Y2
)
""")
cnxn.commit()
Gruß 123GuteLaune