首页 > 技术文章 > 今天遇到的一个bug,折腾了一早上,不过解决了,还是很高兴

haiyan123 2018-01-13 15:16 原文

1、总结出错的问题

当我在用flask做项目的时候,需要创建表,创建表的时候,我用的是Flask-Migrate组件,直接用python manage.py init ,python manage.py migrate ,python manage.py upgrade这样的命令就可以创建表。

我的测试表结构是这样的

 1 from sqlalchemy import Column, Integer, String, UniqueConstraint
 2 from sqlalchemy_utils import ChoiceType
 3 
 4 from app import db
 5 
 6 
 7 class UserInfo(db.Model):
 8     '''用户表'''
 9     __tablename__ = "userinfo"
10     id = Column(Integer(), primary_key=True)
11     name = Column(String(32), index=True, nullable=False)
12     email = Column(String(32), unique=True)
13     __table_args__ = (
14         UniqueConstraint("id", "name", name="id_username"),  # id和username联合唯一
15         {
16             "mysql_engine": "InnoDB",
17             "mysql_charset": "utf8"
18         }
19     )
20 
21 
22 class Group(db.Model):
23     __tablename__ = "group"
24     id = Column(Integer(), primary_key=True)
25     name = Column(String(32))
26     __table_arg__ = {
27         "mysql_engine": "InnoDB",
28         "mysql_charset": "utf8"
29     }
30 
31 
32 class Xuan(db.Model):
33     __tablename__ = 'xuan'
34     types_choices = (
35         (1,'欧美'),
36         (2,'日韩'),
37         (3,'老男孩'),
38     )
39     id = Column(Integer,primary_key=True,autoincrement=True)
40     name = Column(String(64))
41     types = Column(ChoiceType(types_choices,Integer()))
model

出错现象:

当我python manage.py upgrade的时候

执行命令的时候会自动生成这样的结构

解决办法:在没有python manage.py upgrade之前手动解决

 

 然后再次python manage.py upgrade的时候就合适了。。

 

推荐阅读