2016-11-11 70 views
0

字符串我有一個表,看起來像這樣蒸餾器:包括約束拒絕與人物

> select * from mytable 
    id  value 
0 1 hello world 
1 2 hello_world 
2 3 hello+world 

我試圖強加一個蒸餾器檢查約束,其中value值不能有:字符。我將如何使用alembic.op對象來做到這一點?什麼是upgrade()downgrade()功能?

編輯:我使用的數據庫是Mysql。

+0

這個約束如何應用?以某種方式在新數據或現有數據上?如果現有數據違反了上述約束條件,應該怎麼辦?添加約束條件也可以 - 並且 - 是一個特定的數據庫。你在用什麼數據庫? –

+0

@IljaEverilä全部都是真的。假設是表中有一些數據,但它們沒有違反約束條件。我使用的數據庫是Mysql。 – hlin117

回答

1

在這種情況下,檢查約束工作

def upgrade(): 
    op.create_check_constraint("constraint_name_here", "mytable", "value not like '%:%'") 

def downgrade(): 
    op.drop_constraint("constraint_name_here", "mytable", type_="check") 

但MySQL不支持檢查約束。 ¯_(ツ)_ /¯