2016-04-05 30 views
0

Yeni bir veritabanına taşınması gereken bir veritabanım var. Benim fikrim bütün eski girdileri okuyan, onları yeni formatta dönüştüren ve yeni veritabanına gönderen bir python betiğidir. Sorun, tarihin (zaman) farklı şekilde depolanmasıdır. Eski db'de 5 sütun (yıl, ay, gün, saat, dakika) vardır, ancak yeni olan sadece bir datetime alanıyla çalışır (YYYY-AA-GG ss: dd: ss).Mysql datetime alanı için bir strftime-object oluştur ve ekle

Python böyle bir şey denerseniz: Hatta beklenenden daha başka zaman olsun

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)) 

:

2015-11-29 13:30:00 

ben 180k girişlerinin doğru tarih saat biçimi için nasıl alabilirim veya bu belki de bir datetime alanına bir değer girmenin zaten yanlış yolu?

DÜZENLEME:

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() 

Ben bu hatayı alıyorum bu denerseniz:

TypeError: not all arguments converted during string formatting 

başka ne bir girdi ekleyebilirsiniz yapmam gerekiyor önce? : S

+0

,% aynı sayıda yok gibi görünüyor Verilerin sayısı olarak –

cevap

0

sen doğru yapıyorsun gibi görünüyor, ancak GMT zaman baskı değildir: Diğer sorunuza gelince

# 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

Teşekkürler, düşündüğümden çok daha kolay. Belki başka bir sorunla bana yardımcı olabilirsiniz (yukarıda düzenlenen yayına bakınız)? – Ragyal