python'timestamp'无法转换为mysql类型

eh57zj3b  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(869)

我在excel中有一些数据要插入mysql表。我把excel读入一个数据框。数据中包含一个日期列,其中的日期被转换为datetime以匹配mysql表设置(date列的类型是datetime)。当我尝试将数据插入到表中时,出现错误:
mysql.connector.errors.programmingerror:处理格式参数失败;python'timestamp'无法转换为mysql类型
当我打印出转换后的日期,我得到它在'yyyy-mm-dd hh:mm:ss'格式,似乎是mysql需要的格式?
2011-05-10 00:00:00
可能是做了些简单的错误,但不能让它起作用。有什么建议吗?
表的sql:

CREATE TABLE `Weight` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `Date` datetime NOT NULL,
 `Weight` float NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_c

我的python脚本,稍微扩展了一下,包含了一些虚拟数据:

import pandas as pd
import mysql.connector
import numpy as np

# import csv in dataframe

# df = pd.read_excel('/excel.xlsx')

# dataframe for this question on stackoverflow

startDate = '2011-05-03'
dateList = pd.date_range(startDate, periods=1000).tolist()
df = pd.DataFrame({'Day': dateList,
                'Weight': np.random.normal(loc=68, scale=10, size=(1000,))
              })
df['Day'] = pd.to_datetime(df['Day'],errors='raise')

mydb = mysql.connector.connect(
    host="host",
    user="user",
    port="port",
    passwd="Password",
    database="database_name"
)

mycursor = mydb.cursor()
sql = "INSERT INTO Weight (Date, Weight) values (%s, %s)"

for index, row in df.iterrows() :
    val = (row['Day'], row['Weight'])
    mycursor.execute(sql, val)

很明显,它在execute(sql,val)部分失败

7hiiyaii

7hiiyaii1#

按照@deepspace的建议,使用df.to\u sql解决了这个问题。

相关问题