我将JSON数据到MySQL数据库Python的MySQL的连接器 - 使用fetchone
我解析的JSON,然后将其插入MySQL数据库使用Python连接器
经过反复试验时发现未读结果,我可以看到错误与这段代码
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_stamp通过原点和目标坐标进行搜索。我相信逻辑是正确的,通过在本节之后立即打印leg_no,我可以看到在第一次检查时出现的值是正确的
但是,当添加到代码的其余部分时,会导致后续部分更多的数据使用光标失败,这个错误被插入 -
raise errors.InternalError("Unread result found.")
mysql.connector.errors.InternalError: Unread result found.
这个问题似乎类似于MySQL Unread Result with Python
是查询太复杂,需要分割或有其他问题?
如果查询确实太复杂了,谁能告诉如何最好地分割这个?
编辑按@戈德的帮助下,我已经企图把未读的结果
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]
划痕头
EDIT 2 - 当我打印ie.msg,我得到 -
No result set to fetch from
你在循环结果集,并使用结果再次查询数据库?你使用相同的光标吗?那么为第一个缓冲区使用缓冲光标可能会很好。我没有更多的补充Gord的答案。 – geertjanvdk