Конвертировать py mysql результат запроса с MySQL десятичным типом в Python float - PullRequest
0 голосов
/ 23 января 2020

Я относительно новичок в Python (3.x), и одно из смешивающих поведений языка состоит в том, что десятичные числа и числа с плавающей запятой кажутся разными типами (я предполагаю, что здесь разница обычна между double / float. ..).

Сложность изображения заключается в том, что мои Python logi c считывают / записывают в MySQL записи с полями, определенными как десятичные (с различными форматами).

Со стороны записи я определил pymysql кодировщики, как это:

import numpy as np
import pymysql

pymysql.converters.encoders[np.float64] = pymysql.converters.escape_float
pymysql.converters.conversions = pymysql.converters.encoders.copy()
pymysql.converters.conversions.update(pymysql.converters.decoders)

Это помогло, я думаю, с сохранением Python десятичных знаков к MySQL записям.

Но на стороне чтения, кажется, нет очевидного способа получить Python float s, когда мы читаем Decimal поля с помощью py mysql запросов. (Возможно, это означало бы уныние и, следовательно, возможную потерю данных.)

Что люди здесь делают? Соглашение только, чтобы использовать десятичные типы всюду, чтобы обойти эти проблемы понижающего / повышающего преобразования? А как насчет интерфейса MySQL через py mysql?

В общем, я думаю, что поведение float / double должно быть просто автоматизированным c. То, что язык налагает различие между float / double, вероятно, хорошо; этот код полностью ломается, потому что простой операнд + или - не изящно работает с переменными типами, но это действительно сбивает с толку.

Спасибо.

...