Мне удалось успешно добавить данные в таблицу MySQL с двумя PK, однако при этом существующие типы данных меняются на те, которые выбирает pandas.
Это то, что я делаю:
1 - определение для добавления PK перед записью в БД (находится в другом посте StackOverflow)
def to_sql_k(self, frame, name, if_exists='fail', index=False,
index_label=None, schema=None, chunksize=None, dtype=None, **kwargs):
if dtype is not None:
for col, my_type in dtype.items():
if not isinstance(to_instance(my_type), TypeEngine):
raise ValueError('The type of %s is not a SQLAlchemy '
'type ' % col)
table = pd.io.sql.SQLTable(name, self, frame=frame, index=index,
if_exists=if_exists, index_label=index_label,
schema=schema, dtype=dtype, **kwargs)
table.create()
table.insert(chunksize)
pandas_sql = pd.io.sql.pandasSQL_builder(engine)
* Движок настроен нормально и работает для других сценариев.
2- Записать DF в БД:
to_sql_k(pandas_sql, DF, 'TableName',
index=False, keys=('Column1', 'Column2'), if_exists='replace')
Изменения типа данных IE после выполнения этого:
varchar (100) в текст
int (1) в bigint (20)
varchar (45) to text
даже datetime to text (что странно, потому что если я делаю df.dtypes, он говорит datetime64 [ns]
Любая помощь будетвысоко ценится.