0

継続時間、開始時間、その他の種類のフィールドとともに多くのタスクが保存されている mysql データベースがあります。

構造は多かれ少なかれ次のようになります。

taskId | taskName | startTime | duration | server...

私にとって本当に重要なことは、タスクを取得し、すべてのタスクのすべての期間を taskName で始まるすべてのタスクの異なる列に配置し、最後の行にその期間の平均、または平均の式を格納することです。確かに何が良いでしょう。

私はスクリプトの新人なので、Python で csv.readers を処理することに行き詰まっています。私のアイデアは、タスクごとに異なるクエリを作成し、それらを列に書き込むことでした。次に、csv を読み取り、新しいクエリを作成して、新しいデータを追加します。それが最善の方法だとは思いませんが、他にどうすればよいかわかりません。

私は私が持っているものをあなたに与えますが、新しいより良い方法を自由に提供してください:) :

fp = open ("priors.csv","w")
file = csv.writer(fp)
cur = con.cursor()

cur.execute("SELECT duration FROM table WHERE jobname = 'one_task'")
rows=cur.fetchall()
file.writerow('one_task')
file.writerows(rows)
fp.close()

######################################################################################
cur.execute("SELECT duration FROM table WHERE jobname = 'different_task ")
rows_to_write=cur.fetchall()

fprd = open ("priors.csv","rb")
file_rd = csv.reader(fprd)

file_rd_ls = []
for row in file_rd:
print row
file_rd_ls.append(row)

fprd.close()

fp = open ("priors.csv","w")
file_wr = csv.writer(fp)
count = 1
r_t_w_len = len(rows_to_write)
fl_rd_len = len(file_rd_ls)

result_list = list(rows_to_write)

dumm_string = ""

if r_t_w_len > fl_rd_len:


  for i in range(fl_rd_len):

    dumm_string = row + ',' + str(rows_to_write[count])
    result_list.insert(count, dumm_string)
    count+=1

  while count <= (r_t_w_len + 1):
    dumm_string = '""' + ',' + str(rows_to_write[count])
    result_list.insert(count, dumm_string)

else:

  for i in range(fl_rd_len):
    if count <= (r_t_w_len + 1):
      dumm_string = row + ',' + str(rows_to_write[count])
      result_list.insert(count, dumm_string)
      count+=1

    else:
      result_list.insert(count, row)

rows_to_write = tuple(result_list)
file_rd.writerows()

fp.close()

ご覧のとおり、タスクの名前は番号付けされていないため、ループを作成してそれらを実行することはできません。最初の 2 つのタスクから始めていますが、100 以上の異なるタスクがあります。

PS: 私はリストの cvs を正しく読んでいないことを知っています。私は今どこにいますか?

PS2: データベースを適切に読み取ることができないため、平均計算については攻撃しませんでした。

4

0 に答える 0