SQLAlchemy 截断列=(整数)
这里有个奇怪的问题:
我有一个反射的 SQLAlchemy 类,长得像这样:
class Install(Base):
__tablename__ = 'install'
id = Column(Integer, primary_key=True)
ip_address = Column(Integer)
我用下面的方式把字符串表示的 IP 地址(比如 "1.2.3.4")转换成整数:
struct.unpack('!L', socket.inet_aton(ip_address))[0]
这个转换是有效的,我确认它能正确转换 IP 地址。不过,当我查看数据库时,发现大部分的值都被截断成了 "2147483647"。
2147483647 这个值我找不到办法阻止它被截断,我知道 MySQL 是可以处理这个的,为什么 SQLAlchemy 会把我的整数变成这样呢?
提前谢谢大家!
1 个回答
3
解决了!
对于MySQL数据库:确保你使用的是无符号的整数(unsigned 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))