【问题标题】:Convert String In Python to insert into MySQL DB date column date在 Python 中转换字符串以插入 MySQL DB 日期列日期
【发布时间】:2013-03-15 00:02:55
【问题描述】:

我有一个不寻常的日期字符串,我想插入 MySQL 数据库。

date = 'Thu, 14 Mar 2013 13:33:07 -0400'

这是插入语句

self.cursor.execute("INSERT INTO table1 (`DATE`)VALUES (%s);",(date))

当我这样做时,它会显示在数据库中,如下所示:

0000-00-00 00:00:00

即使我手动输入 SQL,它也会以相同的方式显示。

如何将日期字符串转换为mysql可读的插入日期?

【问题讨论】:

    标签: python mysql date


    【解决方案1】:

    pip install python-dateutil

    from dateutil.parser import parse
    date = 'Thu, 14 Mar 2013 13:33:07 -0400'
    parse(date).strftime("%Y-%m-%d %H:%M:%S")
    

    【讨论】:

    • ImportError: No module named dateutil.parser
    • pip install python-dateutil
    【解决方案2】:

    这个日期字符串在RFC 2822 date format 中,可以用email.utils.parsedate 解析(它是标准库的一部分):

    In [428]: import email.utils as eu
    
    In [429]: eu.parsedate('Thu, 14 Mar 2013 13:33:07 -0400')
    Out[429]: (2013, 3, 14, 13, 33, 7, 0, 1, -1)
    

    一旦你有了一个日期时间对象,你就可以将它以那种形式(不带格式)插入到 MySQL 中:

    date = eu.parsedate('Thu, 14 Mar 2013 13:33:07 -0400')
    self.cursor.execute("INSERT INTO table1 (`DATE`) VALUES (%s)",(date,))
    

    注意:cursor.execute 的第二个参数必须是一个序列。所以使用元组(date,) 而不是日期时间对象(date)

    此外,您的 SQL 字符串中不需要分号。

    【讨论】:

      【解决方案3】:

      我没有足够的声望来评论上面的问题,所以我会把答案放在这里。

      如果运行时遇到 ImportError,则需要安装模块:

      from dateutil.parser import parse
      

      到这里下载解析器:http://labix.org/python-dateutil#head-2f49784d6b27bae60cde1cff6a535663cf87497b

      接下来,解压文件夹并以管理员权限打开 cmd。导航到文件夹并输入:

      python setup.py install
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-14
        • 2013-09-13
        相关资源
        最近更新 更多