Python 'float64' нельзя преобразовать в тип MySQL, но в ручном запросе это не проблема - PullRequest
1 голос
/ 13 марта 2020

У меня есть скрипт python, и я хочу вставить данные в базу данных следующим образом:

(1, -0.12301105260848999)
(1, 0.07728659361600876)
(1, 0.005048183258622885)
(1, -0.03252531960606575)
(1, -0.05449267476797104)
(1, -0.026811596006155014)
(1, 0.014027083292603493)
(1, -0.10952591896057129)
(1, 0.15669232606887817)
(1, -0.04698480665683746)
(1, 0.26182907819747925)
(1, -0.015784427523612976)

И моя таблица в порядке, db

В этом Я пытаюсь вручную вставить данные в БД, и все работает нормально. Но в моем python скрипте возвращается ошибка:

Failed processing format-parameters; Python 'float64' cannot be converted to a MySQL type

Я не знаю, что с этим не так, потому что я вставляю вручную и работаю. Я использовал обычный скрипт для вставки в БД, здесь мой скрипт:

insert_encode_query = """INSERT INTO encoding_data
                            (id, face_encode)
                            VALUES (%s, %s)"""

    cursor = connection.cursor()
    cursor.executemany(insert_encode_query, detail_encoding)
    connection.commit()

Внутри переменной detail_encoding:

[(1, -0.12301105260848999), (1, 0.07728659361600876), (1, 0.005048183258622885), (1, -0.03252531960606575), (1, -0.05449267476797104), (1, -0.026811596006155014)]

Что не так с моим кодом или как преобразовать в SQL тип от float / decimal от python float64, или какое-либо решение для этого? Спасибо

1 Ответ

1 голос
/ 13 марта 2020

Насколько мне известно; Вы должны быть в состоянии исправить это, преобразовав их в python типы данных, используя встроенные функции, так что то, что вы передали, прошло бы примерно так:

int(num)

float(decimal)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...