2016-05-12 13 views
0

我有一個MySQL設置列,我使用sqlalchemy.dialects.mysql.SET來描述,我想將server_default arg設置爲包含兩個值的集合。我在尋找這樣的事情:如何在SQLAlchemy中爲MySQL SET設置server_default?

from sqlalchemy.dialects.mysql import SET 
class MyTable(Model): 
    letters = Column(SET('a', 'b', 'c', 'd', 'e'), server_default=['a','b']) 

如果我試圖爲上述簡單的東西,我得到:

Argument 'arg' is expected to be one of type '<class 'str'>' or '<class 'sqlalchemy.sql.elements.ClauseElement'>' or '<class 'sqlalchemy.sql.elements.TextClause'>', got '<class 'list'>'

有沒有什麼地方我能找到ClauseElements我可以使用列表?

回答

1

也許不同的ClauseElement s的最佳參考是"Column Elements and Expressions"

從閱讀"The SET Type"看來,將值傳遞給MySQL中SET列的常用方法是使用逗號分隔值的(SQL)字符串。一種方法是使用SQLAlchemy的literal(),它會產生一個合適的綁定參數。然後你會通過一個文字字符串像這樣:

from sqlalchemy import literal 
from sqlalchemy.dialects.mysql import SET 

class MyTable(Model): 

    letters = Column(SET('a', 'b', 'c', 'd', 'e'), server_default=literal('a,b')) 
相關問題