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,其中包含了name和age两个字段。使用CheckConstraint()函数来设定age字段的合法取值范围为18到25之间。
然后创建了一个数据表students,并插入了两条数据:分别是name为'John',age为20的记录,和name为'Tom',age为17的记录。由于Tom的年龄不在合法范围内,因此无法插入到数据表中。
最后,查询并打印出了所有的学生记录。
总结:通过使用CheckConstraint()函数,可以很方便地设定数据表字段的合法取值范围。这样可以确保插入到数据表中的数据满足特定的约束条件。
