为列分配默认值

时间:2013-12-05 03:11:57

标签: sqlalchemy

我一直在尝试生成以下sql代码,用于使用sqlalchemy在表中创建MySQL列:

`win` tinyint(1) unsigned NOT NULL DEFAULT '0'

我使用它作为我的sqlalchemy声明:

class Matches(Base):
"""matches entity class"""
__tablename__ = 'matches'
__table_args__ = {
    'mysql_engine': 'InnoDB',
    'mysql_charset': 'utf8'
}
win = Column(TINYINT(1, unsigned=True), nullable=False, default=0)

然而,这不会生成我只想要以下的默认值:

win TINYINT(1) UNSIGNED NOT NULL

当我设置default ='CURRENT_TIMESTAMP'(在不同的列中)时,它会自动添加我不想要的更新。 我错过了什么吗?

另外,作为一个附带问题,我将如何使用sqlalchemy生成类似的东西:

UNIQUE KEY `matchid` (`match_id`)

我知道Column采用了一个独特的bool属性来生成UNIQUE部分但是当我使用Column属性key ='matchid'时似乎没有任何事情发生。

1 个答案:

答案 0 :(得分:1)

请参阅Columnserver_defaultunique

win = Column(TINYINT(1, unsigned=True), nullable=False, default=0, 
    server_default=text('0'),
    unique=True,
)