繁体   English   中英

python和mysql将数据下载到csv中

[英]python and mysql downloading data into a csv

即时通讯使用python熊猫并将mysql查询存储到数据帧中,然后将结果下载到excel文件中

   query = """  ...  """
   DF= pd.read_sql(query, connection)
   writer = pd.ExcelWriter('excel.xlsx',engine='xlsxwriter')
   DF.to_excel(writer,'sheet1') 
   writer.save()

但是,当我需要更新文件时,我必须运行SQL查询来检索所有现有数据+新行,这每次可能要花一些时间才能执行,并且会使服务器不必要的负载

因此,例如,我有一个包含100行的excel文件,而数据库有110行,我将运行查询以从数据库中检索第90行到第110行的数据,并使用其他10行更新excel

谢谢

检查文件是否存在,然后写入文件

import os
exists = os.path.exists(file) # check if the file already exists
df=pd.read_sql(query, connection) #read the data using limit or offset here
open_mode = None
if exists:
    open_mode = 'a'
    header = False
else:
    open_mode = 'w'
    header = True

with open(file, open_mode) as f:
    df.to_excel(f, header=header, index=False)

有几种方法可以做到这一点。 首先,您需要在excel中读取数据,即将现有数据加载到数据框中。 另一种选择是将指针存储在某个位置,例如,数据框中的行数或数据库中的最后一个id(假设您可以使用auto_increment键),然后相应地修改查询。 例如,将最后一个ID(例如1000)存储在文件中。 然后阅读并从那里继续前进。

with open('last_id') as f:
    last_id = f.read()

sql = "SELECT * FROM `mytable` WHERE `id` > %d" % last_id

或者,存储提取数据的大小并使用offset语法

然后,这只是连接两个数据帧(现有+新)的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM