2016-04-05 5 views
0

Ich habe eine Datenbank, die in eine neue verschoben werden soll. Meine Idee ist ein Python-Skript, das alle alten Einträge liest, sie im neuen Format konvertiert und an die neue Datenbank sendet. Das Problem ist, dass das Datum (Uhrzeit) anders gespeichert wird. In der alten db gibt es 5 Spalten (Jahr, Monat, Tag, Stunde, Minute), aber die neue funktioniert nur mit einem Datetime-Feld (JJJJ-MM-TT hh: mm: ss).Erstellen und Einfügen eines Strftime-Objekts für mysql datetime-Feld

Wenn ich versuche, so etwas wie dies in Python:

import time 
t = time.mktime((2015,11,29,14,30,0,0*,246*,-1*))  # * not sure about these values 
print time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(t)) 

ich noch ein weiteres Mal bekommen als erwartet:

2015-11-29 13:30:00 

Wie kann ich für 180k Einträge die richtige Datetime-Format erhalten oder ist das vielleicht schon die falsche Art einen Wert in ein Datetime Feld einzugeben?

EDIT:

import MySQLdb 

mysql_opts = { 
'host': "123.45.67.89", 
'user': "user", 
'pass': "password", 
'db': "db"} 

t = time.mktime((2015, 11, 29, 14, 30, 0, 0, 0, 0)) 
date = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(t)) 
data = [date,...] 

mysql = MySQLdb.connect(mysql_opts['host'],mysql_opts['user'],mysql_opts['pass'],mysql_opts['db']) 
cursor = mysql.cursor() 

cursor.execute("INSERT INTO table (date, ...) VALUES(%s,...)",(data[0],...)) 

mysql.commit() 
mysql.close() 

Wenn ich das versuche ich immer diese Fehlermeldung:

TypeError: not all arguments converted during string formatting 

Was muss ich tun, bevor ich kann einen Eintrag hinzufügen? : S

+0

wie für Ihre andere Frage, so scheint es, dass Sie die gleiche Anzahl von% nicht haben s als die Anzahl der Daten –

Antwort

0

Es scheint, wie Sie es richtig machen, aber Sie werden die Zeit in GMT nicht gedruckt:

# get from old DB 
Y = 2015 
m = 11 
d = 29 
H = 14 
M = 30 
S = 0 

t = time.mktime((Y, m, d, H, M, S, 0, 0, 0)) 
time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(t)) # use this to get the same time 

Out[1]: '2015-11-29 14:30:00' 
+0

Danke, viel einfacher als ich dachte. Vielleicht kannst du mir bei einem anderen Problem helfen (siehe editierter Beitrag oben)? – Ragyal