Python 将时间从csv传递到mysql

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:

我无法将时间导入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:
            (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") );