Я вставки данных JSON в базу данных MySQLPython MySQL разъем - непрочитанные результатов найдено при использовании fetchone
Я разбора JSON, а затем вставить его в БД 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_stamp. Я считаю, что логика звучит и, напечатав leg_no сразу после этого раздела, я могу увидеть значения, которые появляются при первом осмотре, чтобы быть правильными
Однако при добавлении к остальной части кода он вызывает последующие разделы, где больше данных вставляется с помощью курсора, чтобы потерпеть неудачу с этой ошибкой -
raise errors.InternalError("Unread result found.")
mysql.connector.errors.InternalError: Unread result found.
вопрос кажется похож на MySQL Unread Result with Python
является ли запрос слишком сложен и требует расщепления или есть другой вопрос?
Если запрос действительно слишком сложный, может ли кто-нибудь посоветовать, как лучше разделить это?
EDIT В соответствии с @ помощью ГЭРБ, в Ive пытался сбросить непрочитанные результаты
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
Вы перебираете результирующий набор и используете результат для запроса снова базы данных? Вы используете для этого один и тот же курсор? Вероятно, полезно использовать буферизованный курсор для первого. Мне нечего добавить в ответ Горда. – geertjanvdk