【问题标题】:Error while trying to migrate database (slalchemy, slqite3)尝试迁移数据库时出错(slalchemy、slqite3)
【发布时间】:2015-10-14 12:46:35
【问题描述】:

我有下一个 models.py 文件:

from app import db, bcrypt
from sqlalchemy import ForeignKey
from sqlalchemy.orm import relationship


class BlogPost(db.Model):

    __tablename__ = "posts"

    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String, nullable=False)
    desc = db.Column(db.String, nullable=False)
    author_id = db.Column(db.Integer, ForeignKey('users.id'))

    def __init__(self, title, desc):
        self.title = title
        self.desc = desc

    def __repr__(self):
        return "Titulo >> " + self.title

class User(db.Model):

    __tablename__ = 'users'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String, nullable=False)
    email = db.Column(db.String, nullable=False)
    password = db.Column(db.String, nullable=False)
    posts = relationship("BlogPost", backref="author")

    def __init__(self, name, email, password):
        self.name = name
        self.email = email
        self.password = password

    def __repr__(self):
        return "Usuario >> ", self.name

然后我跑了:

python manage.py db init

一切都很好,问题是当我试图修改我的模型文件以进行迁移时。我只是改变了这一行:

self.password = password

到:

self.password = bcrypt.generate_password_hash(password)

当我跑的时候:

python manage.py db migrate

它可以工作,但是当我尝试升级时:

python manage.py db upgrade

我得到下一个错误:

"No support for ALTER of constraints in SQLite dialect")
NotImplementedError: No support for ALTER of constraints in SQLite dialect

注意:数据库只有几条测试记录。谢谢!

【问题讨论】:

    标签: python sqlite flask sqlalchemy alembic


    【解决方案1】:

    自从编写了大多数 Alembic 教程以来,Alembic 已经改变了 SQLite 迁移的完成方式。 ALTER 命令现在需要使用batch mode。如果您以后决定从 SQLite 切换,此模式仍然与其他数据库兼容。

    对于每个要更改的表,将所有操作放在 with op.batch_alter_table('table_name'): 块中。

    def upgrade():
        with op.batch_alter_table('table_name'):
            op.alter_column(...)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-04
      • 1970-01-01
      • 1970-01-01
      • 2012-05-24
      相关资源
      最近更新 更多