Усеченный столбец SQLAlchemy = (целое число) - PullRequest
3 голосов
/ 21 июля 2010

странная проблема здесь:

У меня есть отраженный класс алхимии SQL, который выглядит следующим образом:

class Install(Base):
    __tablename__ = 'install'
    id = Column(Integer, primary_key=True)
    ip_address = Column(Integer)

Я преобразую строковое представление ("1.2.3.4") в int, используя:

struct.unpack('!L', socket.inet_aton(ip_address))[0]

Это работает, я убедился, что он правильно конвертирует IP-адреса. Однако, когда я смотрю на базу данных, большинство из них были усечены до "2147483647"

2147483647 Я не могу узнать, как остановить это усечение, я знаю, что MySQL может справиться с этим, почему SQLAlchemy делает это с моими целыми числами?

Заранее спасибо!

1 Ответ

2 голосов
/ 21 июля 2010

Исправлено!

Для MySQL: Убедитесь, что вы используете неподписанные INT, а затем используйте mysql.MSInteger (unsigned = True) тип:

from sqlalchemy.databases import mysql
[..]
class Install(Base):
    __tablename__ = 'install'
    id = Column(Integer, primary_key=True)
    ip_address = Column(mysql.MSInteger(unsigned=True))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...