data_loader.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import sqlite3, datetime, csv
  2. temp_limit = (760, 870)
  3. conn = sqlite3.connect("steel_production_data3.db")
  4. cursor = conn.cursor()
  5. cursor.execute("select * from production_data")
  6. data_list = cursor.fetchall()
  7. conn.close()
  8. solved_list = []
  9. has_steel_sig = 1
  10. counter = 1
  11. last_length = data_list[0][9]
  12. input_buffer = []
  13. for data in data_list:
  14. if data[3] == 0 and has_steel_sig != 0:
  15. last_length = 0
  16. strand_no = int(data[6])
  17. if strand_no > 8 or strand_no != 2:
  18. continue
  19. timestamp = datetime.datetime.strptime(data[1], "%Y-%m-%d %H:%M:%S.%f").timestamp()
  20. tmp = [counter, timestamp, data[5], data[19+strand_no-1], data[28], data[27], data[8], data[10]]
  21. counter += 1
  22. tmp_2 = [data[29+i] for i in range(36)]
  23. input_buffer = tmp + tmp_2
  24. if data[9]*10 != last_length:
  25. last_length = data[9]*10
  26. if input_buffer:
  27. if (data[7] == temp_limit[0] and data[9]*10 < data[7]) or (data[7] == temp_limit[1] and data[9]*10 > data[7]):
  28. solved_list.append((input_buffer, data[9]*10))
  29. elif abs(data[9]*10-data[7]) < 10:
  30. solved_list.append((input_buffer, data[9]*10))
  31. else:
  32. solved_list.append((input_buffer, data[7]))
  33. input_buffer = []
  34. output_list = []
  35. for i in range(len(solved_list)-1):
  36. tmp = solved_list[i][0][:]
  37. next = solved_list[i+1]
  38. tmp.append((next[0][4]-next[1])*next[0][5]/10 + next[0][3])
  39. output_list.append(tmp)
  40. # 写入 CSV 文件
  41. with open("output.csv", "w", newline="", encoding="utf-8") as file:
  42. writer = csv.writer(file)
  43. writer.writerows(output_list)