使用 SQLAlchemy 进行数据验证
SQLAlchemy可以通过在模型类中定义字段、数据类型以及数据验证规则来进行数据验证。
例如,我们定义一个名为User的模型类,该类包含id、username和password字段:
from sqlalchemy import Column, Integer, String from sqlalchemy.ext.declarative import declarative_base Base = declarative_base() class User(Base): __tablename__ = 'users' id = Column(Integer, primary_key=True) username = Column(String(50), nullable=False) password = Column(String(50), nullable=False) # 添加数据验证规则 @staticmethod def validate_username(username): if len(username) < 6: raise ValueError('username must be at least 6 characters') @staticmethod def validate_password(password): if len(password) < 8: raise ValueError('password must be at least 8 characters')
在上面的代码中,我们使用@Column装饰器定义了id、username和password字段。接下来,我们定义了两个静态方法validate_username和validate_password用于数据验证。
在validate_username方法中,我们检查了用户名的长度是否小于6,如果是,则抛出了一个ValueError异常。在validate_password方法中,我们检查了密码的长度是否小于8,如果是,则同样抛出了一个ValueError异常。
现在,我们可以通过以下方式创建、保存和查询User对象了:
from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker engine = create_engine('sqlite:///example.db') Session = sessionmaker(bind=engine) session = Session() user1 = User(username='pidancode.com', password='12345678') session.add(user1) # commit之前会自动进行数据验证 session.commit() users = session.query(User).all() for user in users: print(user.username, user.password)
在上面的代码中,我们使用Session对象创建了一个新的User对象,然后添加到数据库中。在添加之前,SQLAlchemy会自动调用我们定义的数据验证规则方法,确保数据的合法性。最后,我们查询数据库中的所有User对象并打印它们的用户名和密码。
相关文章