В моей компании у нас есть коллекция MongoDB с некоторой информацией об источниках питания. Я пытаюсь сделать сценарий Python, чтобы взять эту информацию и поместить ее в базу данных MySQL.
Проблема в том, что я получаю сообщение об ошибке при загрузке данных в MySQL. Это ошибка:
Трассировка (последний вызов был последним): Файл "C: \ Users \ ngabioud \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packag es \ mysql \ connector \ translation.py", строка 179, в to_mysql возвращает getattr (self, "_ {0} _to_mysql" .format (type_name)) (значение) AttributeError: у объекта 'MySQLConverter' нет атрибута '_int64_to_mysql'
Во время обработки вышеупомянутого исключения произошло другое исключение:
Трассировка (последний вызов был последним): файл "C: \ Users \ ngabioud \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packag es \ mysql \ connector \ cursor.py", строка 417, в _process_params res = [to_mysql (i) для i in res] Файл "C: \ Users \ ngabioud \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packag es \ mysql \ connector \ cursor.py", строка 417, в res = [to_mysql (i) для i in res] Файл "C: \ Users \ ngabioud \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packag es \ mysql \ connector \ converter.py", строка 182, в to_mysql "MySQL type" .format (type_name)) TypeError: Python 'int64' не может быть преобразован в тип MySQL
Во время обработки вышеупомянутого исключения произошло другое исключение:
Traceback (последний вызов был последним): файл "Fuentes y tickets ME.py", строка 114, в mycursor.execute (querysql, queryval), файл "C: \ Users \ ngabioud \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packag es \ mysql \ connector \ cursor.py ", строка 539, в файле execute psub = _ParamSubstitutor (self._process_params (params)) в файле" C: \ Users \ ngabioud \ AppData \ Local \ Programs \ Python \ Python37 \ " lib \ site-packag es \ mysql \ connector \ cursor.py ", строка 422, в _process_params" Ошибка обработки параметров формата;% s "% err) mysql.connector.errors.ProgrammingError: Ошибка обработки параметров формата; Py thon 'int64' не может быть преобразован в тип MySQL
Тогда это код Python:
idFuente = x['idFuente'] #Tried np.int64(x['idFuente']) but still not working
direccion = x['direccion']['calle'] + " " + str(x['direccion']['nro'])
nodoUbicacion = x['direccion']['nodoUbic']
nodoAlimenta = x['nodoAlimenta']
tieneTransponder = x['tieneTransponder']
tuvoTransponder = x['tuvoTransponder']
macTp = x['macTp']
tieneBaterias = x['tieneBaterias']
tuvoBaterias = x['tuvoBaterias']
try:
tp_psBatteriesPerString = x['info_poleo']['tp_psBatteriesPerString']
tp_psBatteryVoltage_String_1_Battery_1 = x['info_poleo']['tp_psBatteryVoltage_String_1_Battery_1']
tp_psBatteryVoltage_String_1_Battery_2 = x['info_poleo']['tp_psBatteryVoltage_String_1_Battery_2']
tp_psBatteryVoltage_String_1_Battery_3 = x['info_poleo']['tp_psBatteryVoltage_String_1_Battery_3']
tp_psBatteryVoltage_String_2_Battery_1 = x['info_poleo']['tp_psBatteryVoltage_String_2_Battery_1']
tp_psBatteryVoltage_String_2_Battery_2 = x['info_poleo']['tp_psBatteryVoltage_String_2_Battery_2']
tp_psBatteryVoltage_String_2_Battery_3 = x['info_poleo']['tp_psBatteryVoltage_String_2_Battery_3']
tp_psTotalStringVoltage = ['info_poleo']['tp_psBatteryVoltage_String_2_Battery_3']
except:
tp_psBatteriesPerString = None
tp_psBatteryVoltage_String_1_Battery_1 = None
tp_psBatteryVoltage_String_1_Battery_2 = None
tp_psBatteryVoltage_String_1_Battery_3 = None
tp_psBatteryVoltage_String_2_Battery_1 = None
tp_psBatteryVoltage_String_2_Battery_2 = None
tp_psBatteryVoltage_String_2_Battery_3 = None
tp_psTotalStringVoltage = None
querysql = "INSERT INTO fuentes (`idFuente`, `direccion`, `nodoUbicacion`, `nodoAlimenta`, `tieneTransponder`, `tuvoTransponder`, `macTp`, `tieneBaterias`, `tuvoBaterias`, `tp_psBatteriesPerString`, `tp_psBatteryVoltage_String_1_Battery_1`, `tp_psBatteryVoltage_String_1_Battery_2`, `tp_psBatteryVoltage_String_1_Battery_3`, `tp_psBatteryVoltage_String_2_Battery_1`, `tp_psBatteryVoltage_String_2_Battery_2`, `tp_psBatteryVoltage_String_2_Battery_3`, `tp_psTotalStringVoltage`, `fechaCarga`) VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
queryval= (idFuente, direccion,nodoUbicacion,nodoAlimenta,tieneTransponder,tuvoTransponder, macTp, tieneBaterias, tuvoBaterias, tp_psBatteriesPerString, tp_psBatteryVoltage_String_1_Battery_1,tp_psBatteryVoltage_String_1_Battery_2,tp_psBatteryVoltage_String_1_Battery_3,tp_psBatteryVoltage_String_2_Battery_1,tp_psBatteryVoltage_String_2_Battery_2,tp_psBatteryVoltage_String_2_Battery_3,tp_psTotalStringVoltage,fechaCarga)
mycursor.execute(querysql, queryval)
Это структура таблицы MySQL:
И это пример из результата MongoDB:
Где я терплю неудачу? Должен ли я сделать преобразование типа данных? Как мне это сделать? Я использую pymongo и mysql.connector
Спасибо!
1 ответ
Я сделал то, что предложил @DDhaliwal, и это сработало.
idFuente = int(x['idFuente'])
Спасибо!
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.