Używając sqlalchemy, powinieneś przekazać silnik, a nie surowe połączenie:
engine = create_engine("mysql+mysqldb://...")
df.to_sql('demand_forecast_t', engine, if_exists='replace', index=False)
Pisanie do MySQL bez sqlalchemy (więc z określeniem flavor='mysql' ) jest przestarzałe.
Gdy problem polega na tym, że masz zbyt dużą ramkę do jednoczesnego zapisu, możesz użyć chunksize słowo kluczowe (zobacz docstring
). Np.:
df.to_sql('demand_forecast_t', engine, if_exists='replace', chunksize=10000)