SQLAlchemy截断列=(整数)

4

这里遇到了一个奇怪的问题:

我有一个反射SQLAlchemy类,看起来像这样:

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

我使用以下方法将字符串表示形式(“1.2.3.4”)转换为整数:

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

这个代码确实可以工作,我已经确保它可以正确转换IP地址。但是,当我查看数据库时,大多数IP地址都被截断为“2147483647”。

我无法找到如何停止这种截断的方法,我知道MySQL可以处理这个问题,为什么SQLAlchemy会对我的整数进行截断呢?

提前感谢您的帮助!

1个回答

3

已解决!

对于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))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接