gpt4 book ai didi

python - SQLAlchemy 中的验证

转载 作者:太空狗 更新时间:2023-10-30 01:54:42 27 4
gpt4 key购买 nike

如何在 SQLAlchemy 中获取所需的验证器?实际上,我只是想确信用户填写了表格中的所有必填字段。我使用 PostgreSQL,但它没有意义,因为从我的 models.py 文件中的对象创建的表:

 from sqlalchemy import (
Column,
Integer,
Text,
DateTime,
)

from sqlalchemy.ext.declarative import declarative_base

from sqlalchemy.orm import (
scoped_session,
sessionmaker,
)

from zope.sqlalchemy import ZopeTransactionExtension

from pyramid.security import (
Allow,
Everyone,
)

Base = declarative_base()


class Article(Base):
""" The SQLAlchemy declarative model class for a Article object. """
__tablename__ = 'article'

id = Column(Integer, primary_key=True)
name = Column(Text, nullable=False, unique=True)
url = Column(Text, nullable=False, unique=True)
title = Column(Text)
preview = Column(Text)
content = Column(Text)
cat_id = Column(Integer, nullable=False)
views = Column(Integer)
popular = Column(Integer)
created = Column(DateTime)

def __unicode__(self):
return unicode(self.name)

所以这个 nullable=False 不起作用,因为在任何情况下添加的记录都带有空字段。例如,我当然可以通过将名称设置为 NOT NULL 来在数据库级别设置限制。但是 SQLAlchemy 中一定有一些关于验证的东西,不是吗?我来自 yii php 框架,这根本不是问题。

最佳答案

我猜您所说的空字段是指空字符串而不是 NULL。 simple method是添加验证,例如:

class Article(Base):
...
name = Column(Text, unique=True)
...

@validates('name')
def validate_name(self, key, value):
assert value != ''
return value

要在数据库级别实现它,您还可以使用 check constraint ,只要数据库支持:

class Article(Base):
...
name = Column(Text, CheckConstraint('name!=""')
...

关于python - SQLAlchemy 中的验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20718469/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com