Python在写入表时删除所有表索引
下面的代码读取一个MYSQL select命令,该命令由左键将多个表连接在一起形成。然后我想把结果写到另一个表中。但是,当我这样做时,(使用Pandas),它工作正常,数据被添加到表中,但它以某种方式破坏了表中的所有索引,包括主键 代码如下:Python在写入表时删除所有表索引,python,mysql,indexing,pandas,pandasql,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 \ (SELE
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会删除表并重新创建它,而当它重新创建它时,它不会重建索引
此外,这个问题:
建议通过使用sqlalchemy引擎,它可能会潜在地解决这个问题
编辑:
当我使用if_exists=“append”时,问题不会出现,只有if_exists=“replace”才会出现问题。是的,这只是pandas
to_sql
方法中缺少功能的问题。最好的解决方案只是追加,并以另一种方式使用正确的主键创建表。我希望有一种方法可以在重新创建表时创建主键和索引。因此我问了另一个问题:是的,这只是pandasto_sql
方法中缺少特性的问题。最好的解决方案只是追加,并以另一种方式使用正确的主键创建表。我希望有一种方法可以在重新创建表时创建主键和索引。因此我问了另一个问题:是的,这只是pandasto_sql
方法中缺少特性的问题。最好的解决方案只是追加,并以另一种方式使用正确的主键创建表。我希望有一种方法可以在重新创建表时创建主键和索引。因此,我提出了另一个问题: