如何在SQLAlchemy中为Varchar数据类型列指定检查约束?

1 投票
1 回答
2932 浏览
提问于 2025-04-16 02:02

我正在尝试通过SQLAlchemy在某一列上设置这个检查约束。

delete_flag char(1) not null CHECK(delete_flag in('Y','N')),

但是我搞不清楚该用什么语法来实现这个。任何链接、教程或者建议都会对我很有帮助。

谢谢,
Tara Singh

1 个回答

2

在这种情况下,你应该使用SQLAlchemy的枚举类型

import enum
from sqlalchemy import Enum

class YesNo(enum.Enum):
    yes = 'Y'
    no = 'N'

t = Table(
    'data', MetaData(),
    Column('value', Enum(YesNo, create_constraint=True))
)

connection.execute(t.insert(), {"value": YesNo.no})
assert connection.scalar(t.select()) is YesNo.no

检查约束的文档以获取完整信息

撰写回答