|
@@ -217,6 +217,7 @@ def calculate_period_differences(old_hdiffs, result_height_differences):
|
217
|
217
|
def insert_records_to_output_table(db_path, file_name, dis_ass, new_hdiff, correction_numbers, period_differences):
|
218
|
218
|
with sqlite3.connect(db_path) as conn:
|
219
|
219
|
cursor = conn.cursor()
|
|
220
|
+
|
220
|
221
|
# 查询 GC_Input_Point 表中的数据
|
221
|
222
|
query = """
|
222
|
223
|
SELECT New_ID, New_ResultName, New_SPName, New_EPName, New_RLen, TableName
|
|
@@ -225,50 +226,49 @@ def insert_records_to_output_table(db_path, file_name, dis_ass, new_hdiff, corre
|
225
|
226
|
"""
|
226
|
227
|
cursor.execute(query, (file_name,))
|
227
|
228
|
records = cursor.fetchall()
|
228
|
|
- # 检查是否存在相同的 TableName
|
229
|
|
- check_query = """
|
230
|
|
- SELECT COUNT(*)
|
231
|
|
- FROM GC_Output_Point
|
232
|
|
- WHERE TableName = ?
|
233
|
|
- """
|
234
|
|
- cursor.execute(check_query, (file_name,))
|
235
|
|
- count = cursor.fetchone()[0]
|
|
229
|
+
|
236
|
230
|
# 获取最长数组的长度
|
237
|
231
|
max_length = max(len(dis_ass), len(new_hdiff), len(correction_numbers), len(period_differences))
|
|
232
|
+
|
238
|
233
|
# 填充缺失值
|
239
|
234
|
dis_ass = dis_ass + [None] * (max_length - len(dis_ass))
|
240
|
235
|
new_hdiff = new_hdiff + [None] * (max_length - len(new_hdiff))
|
241
|
236
|
correction_numbers = correction_numbers + [None] * (max_length - len(correction_numbers))
|
242
|
237
|
period_differences = period_differences + [None] * (max_length - len(period_differences))
|
243
|
|
- if count > 0:
|
244
|
|
- # 更新操作
|
245
|
|
- update_query = """
|
246
|
|
- UPDATE GC_Output_Point
|
247
|
|
- SET Dis_Ass = ?, New_HDiff = ?, Correct_Factor = ?, Period_Diff = ?
|
|
238
|
+
|
|
239
|
+ # 遍历记录并更新或插入数据
|
|
240
|
+ for record, deformation_result, height_difference, correction, period_diff in zip(records, dis_ass, new_hdiff, correction_numbers, period_differences):
|
|
241
|
+ # 检查是否存在相同的 New_ID 和 TableName
|
|
242
|
+ check_query = """
|
|
243
|
+ SELECT COUNT(*)
|
|
244
|
+ FROM GC_Output_Point
|
248
|
245
|
WHERE New_ID = ? AND TableName = ?
|
249
|
246
|
"""
|
250
|
|
- updated_records = []
|
251
|
|
- for record, deformation_result, height_difference, correction, period_diff in zip(records, dis_ass,
|
252
|
|
- new_hdiff,
|
253
|
|
- correction_numbers,
|
254
|
|
- period_differences):
|
255
|
|
- updated_record = [deformation_result, height_difference, correction, period_diff, record[0], file_name]
|
256
|
|
- updated_records.append(updated_record)
|
257
|
|
- cursor.executemany(update_query, updated_records)
|
258
|
|
- else:
|
259
|
|
- # 插入操作
|
260
|
|
- insert_query = """
|
261
|
|
- INSERT INTO GC_Output_Point (New_ID, New_ResultName, New_SPName, New_EPName, New_RLen, TableName, Dis_Ass, New_HDiff, Correct_Factor, Period_Diff)
|
262
|
|
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
263
|
|
- """
|
264
|
|
- updated_records = []
|
265
|
|
- for record, deformation_result, height_difference, correction, period_diff in zip(records, dis_ass,
|
266
|
|
- new_hdiff,
|
267
|
|
- correction_numbers,
|
268
|
|
- period_differences):
|
269
|
|
- updated_record = list(record) + [deformation_result, height_difference, correction, period_diff]
|
270
|
|
- updated_records.append(updated_record)
|
271
|
|
- cursor.executemany(insert_query, updated_records)
|
|
247
|
+ cursor.execute(check_query, (record[0], file_name))
|
|
248
|
+ count = cursor.fetchone()[0]
|
|
249
|
+
|
|
250
|
+ if count > 0:
|
|
251
|
+ # 更新操作,以 GC_Input_Point 中的数据为准
|
|
252
|
+ update_query = """
|
|
253
|
+ UPDATE GC_Output_Point
|
|
254
|
+ SET New_ResultName = ?, New_SPName = ?, New_EPName = ?, New_RLen = ?,
|
|
255
|
+ Dis_Ass = ?, New_HDiff = ?, Correct_Factor = ?, Period_Diff = ?
|
|
256
|
+ WHERE New_ID = ? AND TableName = ?
|
|
257
|
+ """
|
|
258
|
+ updated_record = [record[1], record[2], record[3], record[4],
|
|
259
|
+ deformation_result, height_difference, correction, period_diff,
|
|
260
|
+ record[0], file_name]
|
|
261
|
+ cursor.execute(update_query, updated_record)
|
|
262
|
+ else:
|
|
263
|
+ # 插入操作
|
|
264
|
+ insert_query = """
|
|
265
|
+ INSERT INTO GC_Output_Point (New_ID, New_ResultName, New_SPName, New_EPName, New_RLen, TableName, Dis_Ass, New_HDiff, Correct_Factor, Period_Diff)
|
|
266
|
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
267
|
+ """
|
|
268
|
+ updated_record = [record[0], record[1], record[2], record[3], record[4], file_name,
|
|
269
|
+ deformation_result, height_difference, correction, period_diff]
|
|
270
|
+ cursor.execute(insert_query, updated_record)
|
|
271
|
+
|
272
|
272
|
conn.commit()
|
273
|
273
|
|
274
|
274
|
|