2017-12-04 4 views
0

Hallo, ich habe ein Skript auf Python mit SQL und ich benutze fecthall() -Methode, um die Elemente zu extrahieren, die ich will und alle großen bis dahin, weil ich zwei Spalten (datetime.date und datetime. Zeit) zu einer anderen Zeitzone, aber ich lese docs und es scheint, es ist nicht veare einfach ...Pyodbc Update Cursor

Für jetzt habe ich das nächste Stück Code holt die Tabelle und dann versuchen, das Datum zu einer anderen Zeitzone zu verdecken, ich weiß. .. Es ist ein Datum, aber wenn in Spanien jetzt 00.00 von 2017.05.12 in Mexiko ist 05.00 von 2017.04.12 soooo ...

BTW im mit pytz

cursor.execute(cadenaSQL + cadenaSQL_dos) 
      su_dict[base+' hagent'] = cursor.fetchall() 
      for row in su_dict[base+' hagent']: 
       row = list(row)[0] 
       print row 
       row[0] = hUTC.localize(datetime.datetime.combine(row[0], hoyUTC.time()).astimezone(hMexico)) 

Für jetzt habe ich diesen Fehler mit diesem Code:

Traceback (most recent call last): File "cms_V2_30m.py", line 1535, in main() File "cms_V2_30m.py", line 1444, in main select_hagent() File "cms_V2_30m.py", line 211, in select_hagent row[0] = hUTC.localize(datetime.datetime.combine(row[0], hoyUTC.time()).astimezone(hMexico)) TypeError: 'datetime.date' object is unsubscriptable

EDIT:

denke ich, ich bin nah, jetzt ist das Problem mit Zeilenobjekt ist, weil es ein Tupel ist ... so ist es inmutble, also versuche ich, einen Weg zu finden, dieses vale zu ändern ...

Der neue Code:

for row in su_dict[base + ' hagent']: 
     print row[0] 
     #list(row) 
     #print my_date[0] 
     #print datetime.datetime.combine(my_date[0], hoyUTC.time()) 
     row[0] = hUTC.localize(datetime.datetime.combine(row[0], hoyUTC.time())).astimezone(hMexico) 

Der neue Fehler:

Traceback (most recent call last): File "cms_V2_30m.py", line 1538, in main() File "cms_V2_30m.py", line 1447, in main select_hagent() File "cms_V2_30m.py", line 214, in select_hagent row[0] = hUTC.localize(datetime.datetime.combine(row[0], hoyUTC.time())).astimezone(hMexico) TypeError: 'tuple' object does not support item assignment

Antwort

0

Sieht aus wie Sie an die Kette der .astimezone() an die falsche Person versuchen. Vielleicht versuchen row[0] = (hUTC.localize(datetime.datetime.combine(row[0], hoyUTC.time())).astimezone(hMexico))

+0

Haben Sie den gleichen Fehler :( – Urkidy

0

Es sieht aus wie Ihr Problem mit dem Überschreiben row innerhalb der Schleife ist. Versuchen Sie es stattdessen?

for row in su_dict[base + ' hagent']: 
    my_date = list(row)[0] 
    print my_date 
    row[0] = hUTC.localize(datetime.datetime.combine(my_date, hoyUTC.time()).astimezone(hMexico)) 
+0

Nö, Jetzt habe ich diesen Fehler: 'Valueerror: astimezone() kann nicht auf eine naive datetime' – Urkidy

+0

angewendet werden Wenn Sie das Datum Zeitzone naiv ist, dann musst du verwenden "Zeitdelta" stattdessen. – FlipperPA