代码之家  ›  专栏  ›  技术社区  ›  Chrisvdberge

Python'timestamp'无法转换为MySQL类型

  •  0
  • Chrisvdberge  · 技术社区  · 6 年前

    我把excel读入一个数据框。 当我尝试将数据插入到表中时,出现错误:

    格式参数;Python'timestamp'无法转换为MySQL

    当我打印出转换后的日期时,我得到的格式是“YYYY-MM-DD HH:MM:SS”,这似乎是MySQL需要的格式?

    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)
    

    要清楚的是,它在网络上失败了 执行(sql,val)

    1 回复  |  直到 6 年前
        1
  •  0
  •   Chrisvdberge    6 年前

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