我如何使用flask sqlalchemy将列定义为正整数?
我希望答案看起来像这样:
class City(db.Model):
id = db.Column(db.Integer, primary_key=True)
population = db.Column(db.Integer, positive=True)
def __init__(self,population):
self.population = population
但是,此类定义将引发错误b/c sqlalchemy不知道“正”参数。
如果将对象实例化为具有负值的填充,则可能会引发异常。但我不知道如何确保人口在更新后仍保持正数。
谢谢你的帮助。
最佳答案
不幸的是,在python方面,sqlalchemy竭尽所能。没有“特殊的sqlalchemy”方式来表示instance属性必须满足一些约束:
>>> class Foo(Base):
... __tablename__ = 'foo'
... id = Column(Integer, primary_key=True)
... bar = Column(Integer)
...
>>> f = Foo()
>>> f.bar = "not a number!"
>>> f.bar
'not a number!'
如果您尝试提交此对象,则sqlalchey会提示,因为它不知道如何将所提供的python值呈现为sql类型列
Integer
的SQL。如果这不是您要查找的内容,则只想确保不良数据不会到达数据库,那么您需要一个
Check
约束。class Foo(Base):
__tablename__ = 'foo'
id = Column(Integer, primary_key=True)
bar = Column(Integer)
__table_args__ = (
CheckConstraint(bar >= 0, name='check_bar_positive'),
{})
关于python - 带正整数的flask sqlalchemy列约束,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14225998/