Python 'timestamp' 无法转换为 MySQL 类型
在 excel 中有一些数据我想将其插入到 MySQL 表中。 将 excel 读入 DataFrame 中。 数据包括一个日期列,其中包含我将其转换为日期时间以匹配 MySQL 表设置的日期(日期列的类型为 datetime)。 当我尝试将数据插入表中时,出现错误:
mysql.connector.errors.ProgrammingError:处理失败 format-parameters;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) 部分失败。