Sea*_*lus 5 python sqlalchemy flask-sqlalchemy
如何使用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
Run Code Online (Sandbox Code Playgroud)
但是,这个类定义会抛出错误b/c sqlalchemy不知道'正面'参数.
如果对象被实例化为人口的负值,我可以引发异常.但我不知道如何确保更新后人口仍然是积极的.
谢谢你的帮助.
Sin*_*ion 17
不幸的是,在python方面,sqlalchemy尽力避开; 没有'特殊的sqlalchemy'方式来表达实例属性必须满足某些约束:
>>> 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!'
Run Code Online (Sandbox Code Playgroud)
如果您尝试提交此对象,sqlalchey 会抱怨,因为它不知道如何将提供的python值呈现为列类型的SQL Integer.
如果那不是你想要的,你只是想确保坏数据没有到达数据库,那么你需要一个Check约束.
class Foo(Base):
__tablename__ = 'foo'
id = Column(Integer, primary_key=True)
bar = Column(Integer)
__table_args__ = (
CheckConstraint(bar >= 0, name='check_bar_positive'),
{})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5694 次 |
| 最近记录: |