Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Flask Migrate:Alembic将选项转换为255_Python_Flask_Flask Sqlalchemy_Alembic_Flask Migrate - Fatal编程技术网

Python Flask Migrate:Alembic将选项转换为255

Python Flask Migrate:Alembic将选项转换为255,python,flask,flask-sqlalchemy,alembic,flask-migrate,Python,Flask,Flask Sqlalchemy,Alembic,Flask Migrate,我正在使用sqlalchemy_utils向数据库中添加一个“选项”字段。在我使用Flask migrate运行迁移后,它将我的所有选择转换为255,下面是一个简化的示例: # models.py from sqlalchemy_utils.types.choice import ChoiceType class Stuff(db.Model): type = db.Column(ChoiceType(Stuff_types)) 运行manage.py migrate后,迁移文件如下

我正在使用sqlalchemy_utils向数据库中添加一个“选项”字段。在我使用Flask migrate运行迁移后,它将我的所有选择转换为255,下面是一个简化的示例:

# models.py
from sqlalchemy_utils.types.choice import ChoiceType

class Stuff(db.Model):
    type = db.Column(ChoiceType(Stuff_types))
运行
manage.py migrate
后,迁移文件如下所示:

# /migrations/versions/1234migrate.py
import sqlalchemy_utils

def upgrade():
    sa.Column('type', sqlalchemy_utils.types.choice.ChoiceType(length=255), nullable=False),
我手动将那些
length=255
更改为正确的类型(在本例中是
stuff\u-types
),并且成功了。我想知道我是否没有正确设置alemic来使用sqlalchemy_utils。或者我不知道有没有更好的解决方案


谢谢大家

你说的“正确类型”是什么意思?为什么长度不应该是255?@dirn例如,选择的元组,如('stuff1','Stuff One'),('stuff2','Stuff Two'),所有这些都可以放入255个字符的字段中。你遇到的确切问题是什么?运行迁移时是否出现错误?您在字段中插入时出错了吗?@dirn是的,出现了错误,因为此字段被假定为
ChoiceField
,而不是
StringField
,并且
length=255
参数用于
StringField
。数据库并不总是有一个可以处理选项的字段(例如枚举)。SQLAlchemy将值存储在基于字符串的字段中。除非由于Alembic使用了
StringField
,您会遇到异常,否则您的模型应该按照您的预期工作。