SQLAlchemy截断列=(整数)

时间:2010-07-21 14:37:15

标签: python mysql integer sqlalchemy

奇怪的问题在这里:

我有一个反映的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 个答案:

答案 0 :(得分:2)

修正了它!

对于MySQL: 确保使用的是unsigned INTs,然后使用 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))