Как решить InvalidRequestError, обнаруженную во время выполнения pandas .to_ sql () с использованием соединения sqlalchemy? - PullRequest
0 голосов
/ 07 апреля 2020

Я пытаюсь заменить существующую таблицу в базе данных MySQL. Я использовал приведенный ниже фрагмент кода для преобразования фрейма данных с именем frame в таблицу базы данных:

import pandas as pd
import sqlalchemy
from sqlalchemy.types import VARCHAR
database_username = 'root'
database_password = '1234'
database_ip       = 'localhost'
database_name     = 'my_new_database'
database_connection = sqlalchemy.create_engine('mysql+mysqlconnector://{0}:{1}@{2}/{3}'.format(database_username, database_password, database_ip, database_name),pool_size=3,pool_recycle=3600)
frame.to_sql(schema=database_name,con=database_connection,name='table1',if_exists='replace',chunksize=1000,dtype={'Enrollment No': VARCHAR(frame.index.get_level_values('Enrollment No').str.len().max())})

table1 создается успешно. Но когда я перезапускаю последнюю строку кода выше, то есть frame.to_sql(), он выдает следующую ошибку:

InvalidRequestError: Could not reflect: requested table(s) not available in Engine(mysql+mysqlconnector://root:***@localhost/my_new_database) schema 'my_new_database': (table1)

Я хочу знать, почему эта ошибка выдается, когда таблица уже существует, даже если я ' Мы использовали if_exists='replace' и почему он работает правильно только при первом создании таблицы. Что нужно сделать, чтобы избежать этой ошибки?

Примечание: ответы на похожие вопросы предлагают использовать только имя таблицы в нижнем регистре, за которым я следую, называя таблицу как 'table1'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...