Flask SQLAlchemy枚举字段默认值

时间:2017-06-03 11:30:37

标签: python mysql flask flask-sqlalchemy

您好我正在尝试使用flask创建表-SQLAlchmey这里是代码

class User(UserMixin, db.Model):

__tablename__ = 'mailbox'

id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(100), index=True, nullable=False)
password = db.Column(db.String(255), nullable=False)
name = db.Column(db.String(100), nullable=False)
maildir = db.Column(db.String(100), nullable=False)
alias = db.Column(db.Enum('N','Y'), nullable=False, default="N")

运行db init之后,这里的migrate是mysql show create table

的输出
| mailbox | CREATE TABLE `mailbox` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(100) NOT NULL,
  `name` varchar(100) NOT NULL,
  `maildir` varchar(100) NOT NULL,
  `alias` enum('N','Y') NOT NULL,
  PRIMARY KEY (`id`),
  KEY `ix_mailbox_username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |

输出显示枚举的默认值不存在。你能不能帮助我,我需要做些什么来解决这个问题。

2 个答案:

答案 0 :(得分:2)

除了Umar Draz的答案,您还可以在此处找到文档:

https://docs.sqlalchemy.org/en/13/core/metadata.html#sqlalchemy.schema.Column.params.server_default

对于枚举,您必须使用括号:

delay

答案 1 :(得分:0)

我遇到了同样的问题,我通过“ server_default”将其更改为“ default”,如下所示:

var test = tempListErrors.GroupBy(p => new { p.ValidationFormat, p.FieldType})
                    .Select(group => new ValidationFormatErrorDTO
                    {
                        ValidationFormat = group.Key.ValidationFormat,
                        ErrorItems = group.Select(item => new ValidationFormatErrorItemDTO 
                          {
                              LineNumber = item.LineNumber,
                              LineValue = item.LineValue
                          }).ToList()
                    }).ToList();