我尝试了两种方法,两种方法都无法正常工作,我在谷歌搜索并没有找到任何合适的解决方案。我的代码如下:
intField = Column(SmallInt(), length=5)
错误说:
Unknown arguments passed to Column: ['length']
我也试过,知道它应该不起作用,这个解决方案:
intField = Column(SmallInt(5))
它不起作用,因为此SqlAlchemy数据类型不接受参数。
有什么想法吗?
[更新]
我使用MySQL
作为数据库引擎,所以这里的解决方案是导入mysql自己的Integer类型,然后指定我想要的长度。
在上面的例子中,我只需要这样做:
from sqlalchemy.dialects import mysql
Integer = mysql.INTEGER
class ...
...
intField = Column(Integer(5))
但我仍然想知道是否有更通用的方法?
答案 0 :(得分:2)
MySQL具有DECIMAL/NUMERIC类型。
将Decimal(5, 0)
用于5位数的字段。
仅在您确实需要号码时才使用此选项。如果不对此字段进行数学运算,请选择String(5)
并验证数字(isdigit()
是您的朋友)。
在SQLAlchemy中,将其作为Numeric
field处理。