Передача объектов с длинными целыми числами в MYSQL с помощью SQLAlchemy

Я пытаюсь добавить большое целое число к MySQL стол с SQLAlchemy, Как объясняет этот ответ, вы не можете пройти Integer аргумент длины, как вы можете String, Итак, следуя этому ответу, я определил свой столбец с mysql.INTEGER вот так:

from sqlalchemy.dialects import mysql
uniqueid = Column(mysql.INTEGER(20))

Однако, когда я пытаюсь зафиксировать объект с 14-значным uniqueid, я получаю следующее сообщение об ошибке: DataError: (DataError) (1264, "Out of range value for column 'uniqueid' at row 1"), Когда я пытаюсь использовать более короткое целое число, которое не является длинным, у него не возникает проблем с передачей того же объекта в базу данных SQL. Я бегу Python 2.7, другие обсуждения long Тип указывает, что он не должен вести себя иначе, чем int кроме печати L в конце номера. Последнее, что нужно сделать, это установить уникальный идентификатор на тот же короткий номер, но сделать его длинным, как в uniqueid = long(32423)Я все еще могу зафиксировать объект в базе данных SQL.

1 ответ

Решение

Я не разгадал тайну того, почему mysql.INTEGER класс не будет работать с числами, которые должны быть long в Python 2.7, но практическим решением является использование SQLalchemy"s BigInteger класс, который, как следует из названия, может обрабатывать большие целые числа, в том числе long,

Другие вопросы по тегам