Python Pandas to_sql在写入表时删除所有表索引

时间:2015-06-16 08:45:46

标签: python mysql indexing pandas pandasql

我有以下代码,它读取由左连接多个表形成的MYSQL select命令。然后我想把结果写到另一个表。然而,当我这样做时(使用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 method changes the scheme of sqlite tables 表明通过使用sqlalchemy引擎可能会解决问题。

修改

当我使用if_exists =“append”时,问题没有出现,只有if_exists =“replace”才会出现问题。

0 个答案:

没有答案