【发布时间】:2019-06-01 00:01:40
【问题描述】:
我正在尝试创建一个使用 UUID 作为主键的用户模型:
from src.db import db # SQLAlchemy instance
import sqlalchemy_utils
import uuid
class User(db.Model):
__tablename__ = 'user'
id = db.Column(sqlalchemy_utils.UUIDType(binary=True), primary_key=True, nullable=False)
但是当我生成我收到的迁移时:
File "/home/pc/Downloads/project/auth/venv/lib/python3.6/site-packages/alembic/runtime/environment.py", line 836, in run_migrations
self.get_context().run_migrations(**kw)
File "/home/pc/Downloads/project/auth/venv/lib/python3.6/site-packages/alembic/runtime/migration.py", line 330, in run_migrations
step.migration_fn(**kw)
File "/home/pc/Downloads/project/auth/migrations/versions/efae4166f832_.py", line 22, in upgrade
sa.Column('id', sqlalchemy_utils.types.uuid.UUIDType(length=16), nullable=False),
NameError: name 'sqlalchemy_utils' is not defined`
我曾尝试像this 一样明确告知我正在使用的模块,并使用SQLAlchemy 的“内部”实现
Obs:如果我在 /migrations/version/efae4166f832_.py 中手动导入 sqlalchemy_utils 并删除自动生成的长度 sa.Column('id', sqlalchemy_utils.types.uuid.UUIDType(length=16), nullable=False) 它可以工作 fine
我使用generate.py 脚本生成迁移:
from src import create_app
from src.db import db
from flask_migrate import Migrate
# Models
from src.user.models.user import User
app = create_app()
migrate = Migrate(app, db)`
Obs:MySQL 引擎
我希望当我生成迁移时,它会生成一个用户模型,该模型使用从 SQLAlchemy Utils 实现的 UUID 作为主键
【问题讨论】:
标签: sqlalchemy sqlalchemy-utils