Python 将时间从csv传递到mysql
我无法将时间导入mysql数据库。我是python新手,这是我的代码。我可以从csv文件中获取日期,但无法获取时间。我得到的时间是00:00:00和23:59:59。这是我的csv文件Python 将时间从csv传递到mysql,python,Python,我无法将时间导入mysql数据库。我是python新手,这是我的代码。我可以从csv文件中获取日期,但无法获取时间。我得到的时间是00:00:00和23:59:59。这是我的csv文件 2880,H3KZV,2014/06/24 09:34:28,2014/06/25 09:34:28 2880,R9UZB,2014/06/24 10:34:05,2014/06/24 16:34:05 for row in reader: print row try:
2880,H3KZV,2014/06/24 09:34:28,2014/06/25 09:34:28
2880,R9UZB,2014/06/24 10:34:05,2014/06/24 16:34:05
for row in reader:
print row
try:
(location_id, vrm, start_datetime,end_datetime) = [x.decode('utf-8-sig') for x in row]
except:
print "Error with row: " % row
tmp = start_datetime.split(" ")
start_date = tmp[0]
tmp = end_datetime.split(" ")
end_date = tmp[0]
tmp = start_date.split('/')
tmp = end_date.split('/')
iso_date = "%s-%s-%s" % (tmp[0], tmp[1], tmp[2])
entryDatetime = "%s 00:00:00 " % iso_date
expiryDatetime = "%s 23:59:59" % iso_date
sql_local = """INSERT INTO customer_1.pay_and_display
(plate, machine_id, ticket_datetime, expiry_datetime, ticket_name, ticket_price)
VALUES ("%s", "%s", "%s", "%s", "%s", "%s") """ % (vrm, location_id, entryDatetime, expiryDatetime, "RINGOtest", 0)
print sql_local
cursor.execute(sql_local)
curl = pycurl.Curl()
body = Body()
payload = [("fn", "addWhitelistEntryValue"),
("firstname", "WL"),
("startDate", start_date.encode('ascii', 'ignore')),
("startTime", "00:00:00"),
("endDate", end_date.encode('ascii', 'ignore')),
("endTime", "23:59:59"),
("vrm", vrm.encode('ascii', 'ignore')),
("locId", location_id.encode('ascii', 'ignore'))
这是因为你用
entryDatetime = "%s 00:00:00 " % iso_date
expiryDatetime = "%s 23:59:59" % iso_date
编辑:再看一遍,有几个问题。您对所有内容都使用
tmp
,因此它会被覆盖。例如,tmp=start\u date.split(“”
)立即丢失,并且两个日期都使用结束日期
我会转向其他解决方案之一,但如果您想使用当前的方法,这可能会有所帮助
目前,您没有使用csv文件中的时间。
在这里,您可以声明start\u date=tmp[0]
并获取时间,然后将其与日期同时添加
尝试下面的方法(但要返回错误处理和其他内容):
同样值得注意的是,try/except的try块应该包含代码的其余部分。此时,如果解码失败,其余代码仍将尝试运行但失败(或者更糟的是,重新输入前一行)。您可以使用
datetime
模块转换日期和时间
import datetime
start_datetime = '2014/06/24 16:34:15'
start_datetime = datetime.datetime.strptime(start_datetime, "%Y/%m/%d %H:%M:%S").strftime("%Y-%m-%d %H:%M:%S")
print start_datetime
2014-06-24 16:34:15
编辑:您可能可以使用MySQL转换日期和时间:
如果我把它们拿出来,它的时间显示为00:00:00,这就是我被打动的地方,我不知道如何传递csv时间值…这解决了问题,非常感谢。。。。你让我开心。。。。在过去的48小时里,我对这个问题印象深刻。@shruthi我看到我的编辑,你可能会遇到一些其他问题。
(location\u id,vrm,start\u datetime,end\u datetime,ticket\u price)=ticket\u price=int(ticket\u price)/100;在函数(“ticket_price”,ticket_price.encode('ascii','ignore'))中,我如何在我的查询中添加ticket price,因为我有csv格式的ticket price,比如1380=13.80
@shruthi。您能将此添加到您的问题中吗?注释的格式意味着我看不到你想做什么。STR_to_DATE是最好的方法
import datetime
start_datetime = '2014/06/24 16:34:15'
start_datetime = datetime.datetime.strptime(start_datetime, "%Y/%m/%d %H:%M:%S").strftime("%Y-%m-%d %H:%M:%S")
print start_datetime
2014-06-24 16:34:15
INSERT INTO ... VALUES( STR_TO_DATE('2014/06/24 16:34:15', "%Y/%m/%d %H:%M:%S") );