我需要幫助。我有一個patient_results_tbl如下所示的,我想檢索voltage和time基于patient_idand date,準確很多。
# patient_id, voltage, time, date
'260939631', '329', '18:34:37', '2021-11-05'
'260939631', '334', '18:34:39', '2021-11-05'
'260939631', '352', '18:34:39', '2021-11-05'
'260939631', '341', '18:51:01', '2021-11-13'
'260939631', '338', '18:51:02', '2021-11-13'
'260939631', '331', '18:51:03', '2021-11-13'
'260939631', '324', '18:51:04', '2021-11-13'
'260939631', '319', '18:51:05', '2021-11-13'
'785393661', '274', '18:58:07', '2021-11-13'
'785393661', '280', '18:58:08', '2021-11-13'
'785393661', '285', '18:58:08', '2021-11-13'
'785393661', '290', '18:58:09', '2021-11-13'
我使用的代碼如下:
def analyze_voltage_time():
start_point = int(start_point_entry.get()) # getting from entry box
end_point = int(end_point_entry.get()) # getting from entry box
step = int(step_point_entry.get()) # getting from entry box
start = get_date2() # getting from tkcalender date picker
_id = id_selector.get() # # getting from combobox
pat_id = _id[:9]
#query = "SELECT voltage, time FROM patient_results_tbl where patient_id = " pat_id
#mycursor.execute(query, )
query = "SELECT voltage, time FROM patient_results_tbl WHERE 'date' =%s AND 'patient_id' =%s"
mycursor.execute(query, (start, pat_id))
result = mycursor .fetchall()
print(result) # For checking
print(start) # For checking purpose
print(pat_id) # For checking purpose
voltage, time = list(zip(*result)) # ValueError: not enough values to unpack (expected 2, got 0)
for volts in voltage:
voltage_container.append(volts)
for tim in time:
time_container.append(str(tim))
try:
user_data = range(start_point, end_point, step)
for i in user_data:
plt_voltage.append(voltage_container[i])
plt_time.append(time_container[i])
except ValueError:
user_data = range(start_point, end_point)
for i in user_data:
plt_voltage.append(voltage_container[i])
plt_time.append(time_container[i])
my_ax1.plot(plt_time, plt_voltage, color="red")
my_canvas1.draw_idle()
analyse_btn['state'] = DISABLED
將上述代碼作為獨立應用程式運行會出現以下錯誤:
[]
05/11/2021
260939631
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\Kennedy Mulenga\AppData\Local\Programs\Python\Python39\lib\tkinter\__init__.py", line 1892, in __call__
return self.func(*args)
File "C:\Users\Kennedy Mulenga\Desktop\Level 5\18136709_BIT_280_Arduino_ECG_Project\18136709\18136709_ECG_LArdmon_APP_Final.py", line 418, in <lambda>
analyse_btn = Button( tools_frame, text='Analyse', width = 8, height = 2, command = lambda :[get_date2(), analyze_voltage_time()])
File "C:\Users\Kennedy Mulenga\Desktop\Level 5\18136709_BIT_280_Arduino_ECG_Project\18136709\18136709_ECG_LArdmon_APP_Final.py", line 285, in analyze_voltage_time
voltage, time = list(zip(*result))
ValueError: not enough values to unpack (expected 2, got 0)
如果我使用注釋掉的查詢運行,它會回傳所有關于 Patient_id 的記錄,這是正常的。并且還SELECT voltage, time FROM patient_results_tbl WHERE date = 13/11/2021 AND patient_id = 785393661直接在Mysql作業臺 return 中運行查詢0 rows,但是如果我替換AND為OR得到一些結果
# patient_id voltage time date
785393661 274 18:58:07 2021-11-13
785393661 280 18:58:08 2021-11-13
785393661 285 18:58:08 2021-11-13
785393661 290 18:58:09 2021-11-13
不知道哪里做得不好,或者有什么辦法?
uj5u.com熱心網友回復:
你應該提供你的代碼作為一個最小的、可重現的例子,如果我們可以復制粘貼并立即得到相同的錯誤,那么嘗試和修復會更容易。
您輸入到查詢中的日期采用“dd/mm/yyyy”格式,但您的表格采用“yyyy-mm-dd”格式。因此,您的結果最終是一個空串列,您可以看到它列印在您的回溯上方,這為您提供了ValueError.
uj5u.com熱心網友回復:
我已經替換了該行:
query = "SELECT voltage, time FROM patient_results_tbl WHERE 'date' =%s AND 'patient_id' =%s"
mycursor.execute(query, (start, pat_id))
和:
mycursor.execute("SELECT voltage, time FROM patient_results_tbl WHERE date =%s AND patient_id =%s", (start, pat_id))
通過洗掉周圍的引號date并且pat_id
現在已經起作用了,如果有更好的方法來做到這一點,我將不勝感激,謝謝。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/363528.html
