【发布时间】:2016-08-24 20:39:48
【问题描述】:
我尝试了两种方法,但都不起作用,我在 Google 上搜索并没有找到任何合适的解决方案。我的代码如下:
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))
但我仍然想知道是否有更通用的方法?
【问题讨论】:
-
为什么使用数字字段而不是
String(6)并通过验证仅接受数字? -
验证、转换和任何相关操作都会增加开销。当涉及计算时,对整数进行运算会更快。我想在这里使用
code作为属性有点误导,让我改变它以更好地解释我的用例。
标签: python mysql sqlalchemy flask-sqlalchemy