【问题标题】:Inserting datetime into MySql db将日期时间插入 MySql 数据库
【发布时间】:2013-04-27 20:53:57
【问题描述】:

我有一个由 strptime 函数生成的日期时间值

import MySQLdb
a = time.strptime('my date', "%b %d %Y %H:%M")

MySql 数据库中有一个 DATETIME 类型的列。当我尝试将此值插入 db 时,很明显,我得到了

的错误
mysql_exceptions.OperationalError: (1305, 'FUNCTION time.struct_time does not exist')

INSERT INTO myTable(Date......) VALUES(time.struct_time(tm_year=2222, tm_mon=4, tm_mday=1, tm_hour=1, tm_min=2, tm_sec=4, tm_wday=1, tm_yday=118, tm_isdst=-1), ......)

如何将这个值插入到数据库中?

【问题讨论】:

标签: python mysql python-2.7


【解决方案1】:

你现在传入了一个time.struct_time 对象,这是 MySQL 一无所知的。您需要将时间戳格式化为 MySQL 可以理解的格式。不幸的是,MySQLdb 库不适合你。

使用datetime 模块最简单,但您也可以使用time 模块:

import datetime

a = datetime.datetime.strptime('my date', "%b %d %Y %H:%M")

cursor.execute('INSERT INTO myTable (Date) VALUES(%s)', (a.strftime('%Y-%m-%d %H:%M:%S'),))

datetime.datetime 对象上的 .strftime() 方法调用以 MySQL 将接受的方式格式化信息。

仅使用 time 模块执行相同的任务:

import time

a = time.strptime('my date', "%b %d %Y %H:%M")

cursor.execute('INSERT INTO myTable (Date) VALUES(%s)', (time.strftime('%Y-%m-%d %H:%M:%S', a),))

【讨论】:

  • @Antimony:那不是错字;发布的示例代码中有一个a.strftime() 调用。我对现在接受该建议编辑的所有审稿人感到有些不安。
  • 我意识到了这一点。对不起。我改回来了。
猜你喜欢
  • 2019-10-06
  • 1970-01-01
  • 1970-01-01
  • 2012-05-01
  • 1970-01-01
  • 2017-07-08
  • 1970-01-01
相关资源
最近更新 更多