Создать MySQL таблицу из pandas кадра данных - ошибка 1054 (42S22) - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть фрейм данных df, созданный следующим образом:

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

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

Моя цель - импортировать его в базу данных MySQL.

Я создал базу данных SQL ( называется "Sezane"), а его таблица называется "Robes" через Python с MySQL .connector.

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'

Я провел несколько исследований об этой ошибке и обнаружил, что она может стать проблемой в кавычках "/ 'interversion.

Однако после много часов, я до сих пор не понимаю, откуда это. Почему появляется сообщение об ошибке «Индекс»?

Моя цель - сделать df в виде таблицы.

1 Ответ

2 голосов
/ 14 апреля 2020

По умолчанию to_sql пытается экспортировать индекс кадра данных в виде столбца. Вы должны иметь возможность изменить это: df.to_sql(name='Robes', con=engine, if_exists = 'append')

На это: df.to_sql(name='Robes', con=engine, if_exists = 'append', index = False), и вы больше не получите ту же ошибку.

...