Я пытаюсь заменить существующую таблицу в базе данных 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'
.