2016-08-16 47 views
0

我在修改包含日期的sql表时遇到了一些麻烦。在mysql中重写datetime

这是我运行代码:

import pymysql 
cnx=pymysql.connect(dbstuff) 
cursor=cnx.cursor() 
cursor.execute("SELECT * FROM devices ORDER BY ip_addr,Port ASC") 
results=cursor.fetchall() 
lst = [(i,)+line[1:] for i, line in enumerate(results, 1)] 
values = ', '.join(map(str,lst)) 
query="DELETE FROM devices; INSERT INTO devices VALUES {}".format(values) 
query = query.replace("None","NULL") 
cursor.execute(query) 
cnx.commit() 
cnx.close() 

如果在SQL日期栏为空,这个运行没有问题。如果插入场的日期,我得到以下错误:

"FUNCTION datetime.datetime does not exist."

当我看着SQL SELECT查询的结果,日期列值转换为以下几点:

datetime.datetime(2016, 8, 16, 11, 24, 4)

我认为这是一个python的东西,而不是sql的东西。无论如何,我还没有找到将其转换为sql可以理解的格式。

+0

在一个事务中一次做一个说法是比这个多查询方法可能不太凌乱。 – tadman

+0

您需要'str'第一组“结果”中的所有项目。 –

回答

0

调用str函数datetime.datetime对象会将其转换为SQL所需的字符串格式。它目前正试图插入一个python对象。 简单包装你的对象是这样的:

dt = str(my_datetime_object) 
+0

在上面的代码中,整个集合是一个元组元组,它在整个命令'values =','.join(map(str,lst))'中转换为一个字符串。我无法弄清楚如何转换该元组中的单个对象以及值字符串,它仍然显示为'datetime.datetime(etc)'。 – Daryl