2017-09-21 2 views
2

私はpandasとpythonを使用してmysqlデータベースからデータフレームを作成しようとしていましたが、私は助けが必要な問題に遭遇しました。pandasは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私はpandasとpythonの新機能です。あなたは既にしているとき おかげで、私はあなたが同時にディスクやデータベースからの読み込み何をしようとして、本当にわからないんだけど、カルロス

+0

をあなたは 'statement'を定義したが、何とかあなたは' pd.read_sql'関数に 'statement1'を渡しています。それはあなたの問題だろうか? – Abdou

答えて

0

...

まず、あなたはcsvを必要としませんパンダを使用して:

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

次はあなたが単に代わりExcelWriterインスタンスのto_excelの引数としてファイルパスを提供することができます。

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

それは実際にあなたが使用できるExcelファイルである必要がない場合は、次の

df.to_csv("path/to/desired/csv/file") 
関連する問題