mô hình User
tôi làAlembic: Cách di chuyển loại tùy chỉnh trong mô hình?
class User(UserMixin, db.Model):
__tablename__ = 'users'
# noinspection PyShadowingBuiltins
uuid = Column('uuid', GUID(), default=uuid.uuid4, primary_key=True,
unique=True)
email = Column('email', String, nullable=False, unique=True)
_password = Column('password', String, nullable=False)
created_on = Column('created_on', sa.types.DateTime(timezone=True),
default=datetime.utcnow())
last_login = Column('last_login', sa.types.DateTime(timezone=True),
onupdate=datetime.utcnow())
nơi GUID
là một kiểu tùy chỉnh như mô tả trong sqlalchemy docs (Chính xác giống nhau)
Bây giờ khi tôi chạy
alembic revision --autogenerate -m "Added initial table"
tôi nhận được của tôi upgrade()
như
def upgrade():
### commands auto generated by Alembic - please adjust! ###
op.create_table('users',
sa.Column('uuid', sa.GUID(), nullable=False),
sa.Column('email', sa.String(), nullable=False),
sa.Column('password', sa.String(), nullable=False),
sa.Column('created_on', sa.DateTime(timezone=True), nullable=True),
sa.Column('last_login', sa.DateTime(timezone=True), nullable=True),
sa.PrimaryKeyConstraint('uuid'),
sa.UniqueConstraint('email'),
sa.UniqueConstraint('uuid')
)
### end Alembic commands ###
nhưng trong quá trình áp dụng nâng cấp ->alembic upgrade head
, tôi thấy
File "alembic/versions/49cc74d0da9d_added_initial_table.py", line 20, in upgrade
sa.Column('uuid', sa.GUID(), nullable=False),
AttributeError: 'module' object has no attribute 'GUID'
Làm thế nào tôi có thể làm cho nó hoạt động với GUID
/tùy chỉnh gõ vào đây?
nhưng điều đó sẽ phá vỡ trong các thử nghiệm nếu tôi đang sử dụng 'sqlite' cộng với nó sẽ không nhất quán, phải không? – daydreamer
Tôi thực sự không quan tâm nhiều đến việc sử dụng 'sqlite' trong các thử nghiệm, vì môi trường thử nghiệm phải theo sát chặt chẽ việc sản xuất. Ngoài ra, bạn có đang triển khai cùng một mã chống lại nhiều hơn một phương ngữ không? – sayap
Dù sao, tôi sẽ muốn các tập lệnh di chuyển nhất quán với lược đồ thực tế tại thời điểm, tính nhất quán với mã sẽ bị chết vì mã này sẽ thay đổi vĩnh viễn. – sayap