Python Pandas to_sql удаляет все индексы таблицы при записи в таблицу

У меня есть следующий код, который читает команду выбора MYSQL, сформированную из левого соединения многих таблиц. Затем я хочу записать результат в другую таблицу. Однако, когда я это делаю (с Pandas), он работает правильно, и данные добавляются в таблицу, но каким-то образом уничтожаются все индексы из таблицы, включая первичный ключ.

Вот код:

q = "SELECT util.peer_id as peer_id, util.date as ts, weekly_total_page_loads as page_loads FROM %s.%s as util LEFT JOIN \
(SELECT peer_id, date, score FROM %s.%s  WHERE date = '%s') as scores \
ON util.peer_id = scores.peer_id AND util.date = scores.date  WHERE util.date = '%s';"\
    % (config.database_peer_groups, config.table_medians, \
   config.database_peer_groups, config.db_score, date, date)

group_export = pd.read_sql(q, con = db)

q = 'USE %s;' % (config.database_export) 
cursor.execute(q) 
group_export.to_sql(con = db, name = config.table_group_export, if_exists = 'replace', flavor = 'mysql', index = False)
db.commit()

Любые идеи?

Изменить:

Кажется, что, используя if_exists='replace', Pandas удаляет таблицу и воссоздает ее, а когда она воссоздает ее, она не перестраивает индексы.

Кроме того, этот вопрос: метод to_sql pandas изменяет схему sqlite table предполагает, что использование движка sqlalchemy потенциально может решить проблему.

Изменить:

Когда я использую if_exists="append", проблема не появляется, проблема возникает только с if_exists="replace".


person patapouf_ai    schedule 16.06.2015    source источник
comment
Да, это просто проблема отсутствия функций в методе pandas to_sql. Лучшее решение - только добавить и создать таблицу с правильными первичными ключами другим способом.   -  person joris    schedule 16.06.2015
comment
Я надеюсь, что есть способ создать первичный ключ и индексы при воссоздании таблицы. Поэтому я задал еще один вопрос: заголовок stackoverflow.com/questions/30867390/   -  person patapouf_ai    schedule 16.06.2015