从 pandas 数据框创建 MySQL 表 - 错误 1054 (42S22)

Posted

技术标签:

【中文标题】从 pandas 数据框创建 MySQL 表 - 错误 1054 (42S22)【英文标题】:Create MySQL Table from pandas dataframe - error 1054 (42S22) 【发布时间】:2020-07-27 16:13:41 【问题描述】:

我有一个数据框df 创建如下:

df = pd.DataFrame(list(zip(product_urlList, nameList, priceList, picList)), 
               columns =['URL','NomProduit', 'Prix', "LienPic"])

df['IdUnique'] = df['NomProduit'] + df['Prix']

我的目标是将其导入 mysql 数据库。

我通过 Python 和 MySQL.connector 创建了一个 SQL 数据库(称为“Sezane”)及其名为“Robes”的表。

import mysql.connector as mysql

db = mysql.connect(
    host = "localhost",
    user = "root",
    passwd = "password",
    database = "sezane"
)

cursor = db.cursor()
cursor.execute('CREATE TABLE Robes (id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, Nom_Robes VARCHAR(255), Prix_Robes VARCHAR(255), liens_Robes VARCHAR(300), Images_robes VARCHAR (300), Id_Robes VARCHAR (255))'

然后,我尝试在表格中插入这个数据框:

from sqlalchemy import create_engine

engine = create_engine('mysql+mysqlconnector://root:password@Localhost:3306/sezane', echo=True)
df.to_sql(name='Robes', con=engine, if_exists = 'append')

我有以下错误:

ProgrammingError: (mysql.connector.errors.ProgrammingError) 1054 (42S22): Unknown column 'index' in 'field list'

我对这个错误进行了一些研究,发现它可能成为引号括号“/”倒置的问题。

但是,经过几个小时的研究,我仍然不明白它的来源。为什么是关于“索引”的错误信息?

我的目标是能够将我的df 做成表格。

【问题讨论】:

您能举一个实际的df 示例吗? 【参考方案1】:

默认情况下to_sql 尝试将数据框索引导出为列。你应该能够改变这个: df.to_sql(name='Robes', con=engine, if_exists = 'append')

对此: df.to_sql(name='Robes', con=engine, if_exists = 'append', index = False),您将不会再遇到同样的错误。

【讨论】:

以上是关于从 pandas 数据框创建 MySQL 表 - 错误 1054 (42S22)的主要内容,如果未能解决你的问题,请参考以下文章

如何使用其模式从 Pyspark 数据框创建配置单元表?

python postgresql从pandas数据框创建数据库并填充表

使用pymysql将mysql表替换为python中的数据框时行大小太大

带有 hive 的 pyspark - 无法正确创建分区并从数据框中保存表

从 json 创建的 Pandas 数据框有未命名的列 - 由于未命名的列问题,无法插入 MySQL

如何请求一个 zip 文件,提取它,然后从 csv 文件创建熊猫数据框?