欢迎访问宙启技术站
智能推送

SQLAlchemy中使用CheckConstraint()设定数据表字段的合法取值范围

发布时间:2023-12-29 01:47:07

在SQLAlchemy中,可以使用CheckConstraint()函数来设定数据表字段的合法取值范围。CheckConstraint()函数用于指定一个检查约束条件,只有满足该条件的值才能被插入到数据表中。

下面是一个使用CheckConstraint()设定数据表字段的合法取值范围的例子:

from sqlalchemy import create_engine, Column, Integer, String, CheckConstraint
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base

# 创建数据库引擎和Session
engine = create_engine('sqlite:///test.db')
Session = sessionmaker(bind=engine)
session = Session()

# 创建基类
Base = declarative_base()

# 定义数据表模型
class Student(Base):
    __tablename__ = 'students'

    id = Column(Integer, primary_key=True)
    name = Column(String)
    age = Column(Integer)

    # 使用CheckConstraint()设定age字段的合法取值范围为18到25之间(包括18和25)
    __table_args__ = (
        CheckConstraint(age.between(18, 25)),
    )

# 创建数据表
Base.metadata.create_all(engine)

# 插入数据
student1 = Student(name='John', age=20)  # 合法值,可以插入
student2 = Student(name='Tom', age=17)   # 非法值,不可插入

session.add(student1)
session.add(student2)
session.commit()

# 查询数据
students = session.query(Student).all()
for student in students:
    print(student.name, student.age)

在上面的例子中,首先创建了一个名为students的数据表模型Student,其中包含了nameage两个字段。使用CheckConstraint()函数来设定age字段的合法取值范围为18到25之间。

然后创建了一个数据表students,并插入了两条数据:分别是name为'John',age为20的记录,和name为'Tom',age为17的记录。由于Tom的年龄不在合法范围内,因此无法插入到数据表中。

最后,查询并打印出了所有的学生记录。

总结:通过使用CheckConstraint()函数,可以很方便地设定数据表字段的合法取值范围。这样可以确保插入到数据表中的数据满足特定的约束条件。