如何用Sqlalchemy创建一定长度的整数?

时间:2016-04-29 15:42:37

标签: python mysql sqlalchemy flask-sqlalchemy

我尝试了两种方法,两种方法都无法正常工作,我在谷歌搜索并没有找到任何合适的解决方案。我的代码如下:

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

但我仍然想知道是否有更通用的方法?

1 个答案:

答案 0 :(得分:2)

MySQL具有DECIMAL/NUMERIC类型。

Decimal(5, 0)用于5位数的字段。

仅在您确实需要号码时才使用此选项。如果不对此字段进行数学运算,请选择String(5)并验证数字(isdigit()是您的朋友)。

在SQLAlchemy中,将其作为Numeric field处理。