为mysql datetime-field创建并插入strftime-object

时间:2016-04-05 10:11:47

标签: python mysql datetime strftime

我有一个应该被移动到新数据库的数据库。我的想法是一个python脚本,它读取所有旧条目,以新格式转换它们并将它们发送到新数据库。 问题是日期(时间)的存储方式不同。在旧的数据库中有5列(年,月,日,小时,分钟),但新的列只适用于日期时间字段(YYYY-MM-DD hh:mm:ss)。

如果我在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))

我甚至得到了比预期更多的时间:

2015-11-29 13:30:00

如何为180k条目获取正确的日期时间格式,或者这可能是在日期时间字段中输入值的错误方法?

编辑:

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

如果我试试这个,我会收到此错误:

TypeError: not all arguments converted during string formatting

在添加条目之前还需要做些什么? :S

1 个答案:

答案 0 :(得分:0)

看起来你做得对,但是你没有在GMT中打印时间:

# 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'