2017-09-21 169 views
2

所以我一直在嘗試從使用熊貓和python的mysql數據庫創建數據框,但是我遇到了一個我需要幫助的問題。熊貓從mysql數據庫創建數據框

問題是,當寫入數據幀到excel時,它只寫入最後一行,即覆蓋所有以前的條目,並且只寫入最後一行。請參閱下面的代碼

import pandas as pd 
import numpy 
import csv 


with open('C:path_to_file\\extract_job_details.csv', 'r') as f: 
    reader = csv.reader(f) 
    for row in reader: 
     jobid = str(row[1]) 
     statement = """select jt.job_id ,jt.vendor_data_type,jt.id as TaskId,jt.create_time as CreatedTime,jt.job_start_time as StartedTime,jt.job_completion_time,jt.worker_path, j.id as JobId from dspe.job_task jt JOIN dspe.job j on jt.job_id = j.id where jt.job_id = %(jobid)s"""", 
     df_mysql = pd.read_sql(statement1, con=mysql_cn) 
     try: 
      with pd.ExcelWriter(timestr+'testResult.xlsx', engine='xlsxwriter') as writer: 
     df_mysql.to_excel(writer, sheet_name='Sheet1') 

     except pymysql.err.OperationalError as error: 
      code, message = error.args 
      mysql_cn.close() 

請任何人都可以幫助我確定我要去哪裏錯了嗎? PS我是熊貓和蟒蛇的新手。 感謝卡洛斯

+0

您定義'statement'但不知你逝去'statement1'到'pd.read_sql'功能。這可能是你的問題嗎? – Abdou

回答

0

我真的不知道你正在試圖做的從磁盤,並在同一時間讀取數據庫的...

首先,你不需要csv當你已經用熊貓:

df = pd.read_csv("path/to/input/csv") 

接下來,您可以簡單地提供to_excel而不是一個ExcelWriter實例作爲參數傳遞的文件路徑:

df.to_excel("path/to/desired/excel/file") 

如果它實際上並不需要是一個Excel文件,你可以使用:

df.to_csv("path/to/desired/csv/file")