5

我有一个不寻常的日期字符串,我想将它插入 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 可读日期以进行插入?

4

3 回答 3

7

点安装 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")
于 2013-03-15T00:17:37.560 回答
4

此日期字符串采用RFC 2822 日期格式,可以使用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)

一旦你有了一个 datetime 对象,你就可以将它以那种形式(没有格式化)插入到 MySQL 中:

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

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

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

于 2013-03-15T00:28:29.003 回答
3

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

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

from dateutil.parser import parse

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

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

python setup.py install
于 2013-12-31T17:18:41.423 回答