Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python在写入表时删除所有表索引_Python_Mysql_Indexing_Pandas_Pandasql - Fatal编程技术网

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

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

下面的代码读取一个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会删除表并重新创建它,而当它重新创建它时,它不会重建索引

此外,这个问题: 建议通过使用sqlalchemy引擎,它可能会潜在地解决这个问题

编辑:


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

是的,这只是pandas
to_sql
方法中缺少功能的问题。最好的解决方案只是追加,并以另一种方式使用正确的主键创建表。我希望有一种方法可以在重新创建表时创建主键和索引。因此我问了另一个问题:是的,这只是pandas
to_sql
方法中缺少特性的问题。最好的解决方案只是追加,并以另一种方式使用正确的主键创建表。我希望有一种方法可以在重新创建表时创建主键和索引。因此我问了另一个问题:是的,这只是pandas
to_sql
方法中缺少特性的问题。最好的解决方案只是追加,并以另一种方式使用正确的主键创建表。我希望有一种方法可以在重新创建表时创建主键和索引。因此,我提出了另一个问题: