将pandas数据帧写入MySQL

时间:2015-12-08 13:52:39

标签: python mysql pandas

我在这里遇到了一些奇怪的问题并且卡住了。我正在重写生成一些CSV文件的python脚本,我需要在MySQL服务器上写相同的信息。

我设法让它工作......不知何故。

以下是创建CSV的部分:

final_table.get_tunid_town_pivot().to_csv('result_pivot_tunid_town_' + ConsoleLog.get_curr_date_underline() + '.csv', sep=';')

以下是将数据加载到MySQL表中的部分:

conn = pymysql.connect(host='localhost', port=3306, user='test', passwd='test', db='test')
final_table.get_tunid_town_pivot().to_sql(con=conn, name='TunID', if_exists='replace', flavor='mysql', index=False, chunksize=10000)
conn.close()

问题是数据框中有4列,但在MySQL中我只得到最后一列。我不知道为什么会这样,我发现零问题。有什么帮助吗?

1 个答案:

答案 0 :(得分:2)

您的DataFrame(可能由于旋转)具有3个级别的MultiIndex且仅有1列。默认情况下,to_sql也会将索引写入SQL表,但您确实指定了index=False,因此只有一列将写入SQL。

因此要么不指定不包含索引(因此请使用index=True),要么重置索引并写入帧然后(df.reset_index().to_sql(..., index=False))。

另请注意,在to_sql中使用pymysql连接已弃用(它应该给出警告),您必须通过SQLAlchemy引擎使用它。

相关问题