我将 JSON 数据插入到 MySQL 数据库中
我正在解析 JSON,然后使用 python 连接器将其插入到 MySQL 数据库中
通过试用,我发现这个错误与这段代码有关
for steps in result['routes'][0]['legs'][0]['steps']:
query = ('SELECT leg_no FROM leg_data WHERE travel_mode = %s AND Orig_lat = %s AND Orig_lng = %s AND Dest_lat = %s AND Dest_lng = %s AND time_stamp = %s')
if steps['travel_mode'] == "pub_tran":
travel_mode = steps['travel_mode']
Orig_lat = steps['var_1']['dep']['lat']
Orig_lng = steps['var_1']['dep']['lng']
Dest_lat = steps['var_1']['arr']['lat']
Dest_lng = steps['var_1']['arr']['lng']
time_stamp = leg['_sent_time_stamp']
if steps['travel_mode'] =="a_pied":
query = ('SELECT leg_no FROM leg_data WHERE travel_mode = %s AND Orig_lat = %s AND Orig_lng = %s AND Dest_lat = %s AND Dest_lng = %s AND time_stamp = %s')
travel_mode = steps['travel_mode']
Orig_lat = steps['var_2']['lat']
Orig_lng = steps['var_2']['lng']
Dest_lat = steps['var_2']['lat']
Dest_lng = steps['var_2']['lng']
time_stamp = leg['_sent_time_stamp']
cursor.execute(query,(travel_mode, Orig_lat, Orig_lng, Dest_lat, Dest_lng, time_stamp))
leg_no = cursor.fetchone()[0]
print(leg_no)
我已经插入了更高级别的详细信息,现在正在搜索数据库,将这个较低级别的信息与它的父级关联起来。找到这个唯一值的唯一方法是通过原点和目的地与 time _ 戳的坐标进行搜索。我相信这个逻辑是合理的,并且通过在这个部分之后立即打印 leg _ no,我可以看到在第一次检查时出现的数值是正确的
但是,当添加到代码的其余部分时,它会导致后续的部分,其中使用游标插入更多的数据,从而导致这个错误-
raise errors.InternalError("Unread result found.")
mysql.connector.errors.InternalError: Unread result found.
这个问题似乎与 使用 Python 的 MySQL 未读结果类似
是查询过于复杂,需要分割,还是存在其他问题?
如果查询确实过于复杂,有人能提出如何最好地分割它吗?
根据@Gord 的帮助,我试图转储任何未读的结果
cursor.execute(query,(leg_travel_mode, leg_Orig_lat, leg_Orig_lng, leg_Dest_lat, leg_Dest_lng))
leg_no = cursor.fetchone()[0]
try:
cursor.fetchall()
except mysql.connector.errors.InterfaceError as ie:
if ie.msg == 'No result set to fetch from.':
pass
else:
raise
cursor.execute(query,(leg_travel_mode, leg_Orig_lat, leg_Orig_lng, leg_Dest_lat, leg_Dest_lng, time_stamp))
但是,我仍然得到
raise errors.InternalError("Unread result found.")
mysql.connector.errors.InternalError: Unread result found.
[Finished in 3.3s with exit code 1]
挠头
编辑2-当我打印 ie.msg 时,我得到-
No result set to fetch from