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 tables предполага, че чрез използване на 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