python执行mysql语句发生的时间错误问题

类库

  • torndb

语句

  • insert into table (sometime) values (sysdate())

错误

  • 插入之后的时间比当前时间早8个小时

细节

  • sometime是datetime类型,mysql的系统时间是对的,timestamp类型的时间插入不会出错

  • mysql命令行插入datetime时间也不会出错

会是torndb的bug么?

阅读 8.5k
3 个回答

首先,想问一下,你是怎么确认mysql的系统时间是对的?
我同意王子亭的看法,问题应该在mysql服务器上,时区的可能性比较大
我觉得你试试看now()和timestamp这样能确认是不是时区问题

其次,不是很清楚你的部署是怎么安排的,一般服务器和mysql服务器都是分开的,那两边的时间是不一致的,你怎么保证数据一致性的问题呢?
我记得一般我们做法都是在写入的时候用python主动获取时间

下面是我用MySQLdb的例子

sen = 'INSERT INTO docs(md5, link, ctime, author) VALUES (%s, %s, %s, %s)'
stime = time.strftime('%Y-%m-%d %H:%M:%S')
param = (md5, link, stime, author)
cursor.execute(sentence, param)

都是猜测哦,还是需要你自己验证
希望对你有帮助

新手上路,请多包涵

MySQLdb
def __init__(self, host, database, user=None, password=None,

             max_idle_time=7 * 3600, connect_timeout=0,
             time_zone="+8:00", charset="utf8", sql_mode="TRADITIONAL"):
检查下时区time_zone设置
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题