我一直在尝试生成以下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'时似乎没有任何事情发生。
答案 0 :(得分:1)
请参阅Column的server_default
和unique
:
win = Column(TINYINT(1, unsigned=True), nullable=False, default=0,
server_default=text('0'),
unique=True,
)