奇怪的问题在这里:
我有一个反映的SQL炼金术类,如下所示:
class Install(Base):
__tablename__ = 'install'
id = Column(Integer, primary_key=True)
ip_address = Column(Integer)
我使用:
将字符串表示形式(“1.2.3.4”)转换为intstruct.unpack('!L', socket.inet_aton(ip_address))[0]
这确实有效,我确保它正确地转换IP。但是,当我查看数据库时,其中大部分已被截断为“2147483647”
2147483647 我无法找到如何阻止这种截断,我知道MySQL可以处理这个,为什么SQLAlchemy这样做我的整数呢?
提前致谢!
答案 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))