尝试迁移数据库时出错(slalchemy、slqite3)
Error while trying to migrate database (slalchemy, slqite3)
我有下一个 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
注意:数据库中只有几条记录用于测试..谢谢!
Alembic 改变了 SQLite 迁移的完成方式,因为大多数 Alembic 教程都已编写。 ALTER
命令现在需要使用 batch mode。如果您以后决定从 SQLite 切换,此模式仍然与其他数据库兼容。
对于每一个被改变的 table,将所有操作放在一个 with op.batch_alter_table('table_name'):
块中。
def upgrade():
with op.batch_alter_table('table_name'):
op.alter_column(...)
我有下一个 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
注意:数据库中只有几条记录用于测试..谢谢!
Alembic 改变了 SQLite 迁移的完成方式,因为大多数 Alembic 教程都已编写。 ALTER
命令现在需要使用 batch mode。如果您以后决定从 SQLite 切换,此模式仍然与其他数据库兼容。
对于每一个被改变的 table,将所有操作放在一个 with op.batch_alter_table('table_name'):
块中。
def upgrade():
with op.batch_alter_table('table_name'):
op.alter_column(...)