我有一个烧瓶应用程序,连接到一个PostgreSQL数据库。我集成了芹菜,并将其结果后端配置为相同的postgresql数据库。
在烧瓶应用程序中使用的其他表在代码中有类定义,并使用alembic (烧瓶-迁移)生成:
$ flask db migrate -m "add a table" (creates migration file)
$ flask db upgrade (applies changes in migration file to the db)
问题
我在代码中为表添加了一个新类,并运行了flask db migrate -m "add test
我正在开发一个flask应用程序,并通过snowflake-sqlalchemy连接器将Flask-Migrate与雪花数据库一起使用。 我的app/models.py中有以下模型: class User(db.Model):
username = db.Column(db.String(100), primary_key=True)
class UserActions(db.Model):
id = db.Column(db.Integer, primary_key=True)
user = db.Column(db.String(100), db.Foreig
我的存储库可以在这里找到 ( alembic文件夹中的版本),我尝试使用自动生成迁移,
alembic revision --autogenerate -m "some message"
与表的创建无关,即空、降级和升级功能。我正确地配置了本地数据库。我怎么才能解决这个问题?
我的日志是这样的
INFO [alembic.migration] Context impl MySQLImpl.
INFO [alembic.migration] Will assume non-transactional DDL.
Target database is not up to da
我正在努力寻找一种干净的方法(不使用原始SQL)来设置alembic中的列顺序。例如,我想将一个名为'name‘的新列放在'id’列之后,如下所示:
from alembic import op
import sqlalchemy as sa
...
op.add_column(
'people',
sa.Column(
'name',
sa.String(),
nullable=False
),
after='id'
)
但当然,alembic没
我有一个问题,在运行升级命令与瓶迁移。最初,我试图一次修改三个表,然后它挂起,我把它缩小到一个特定的表(其他升级没有问题)。我没看到数据库上有锁。我正在使用Postgres,目前只是在开发环境中工作。迁移命令似乎运行良好,并生成upgrade方法,没有任何问题(请参阅代码)
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.drop_column('equipment', 'criteria_notes')
# ### end A
我在数据库表中添加了一个新列,我的文件夹中已经有迁移文件。所以在添加我的列之后,当我尝试运行迁移时,它不会在数据库中创建新的列。 在db init上,我得到了这个问题 Traceback (most recent call last):
File "manage.py", line 75, in <module>
manager.run()
File "/usr/local/lib/python3.6/site-packages/flask_script/__init__.py", line 417, in run
resu
我有Flask-migrate的flask应用程序。运行db upgrade将创建以下表:
List of relations
Schema | Name | Type | Owner
-------+-----------------+-------+----------
public | alembic_version | table | postgres
public | operations | table | postgres
public | rule_values | table | postgres
我有一个相当大的Flask应用程序,我创建新数据表的典型工作流如下所示:
我在models.py中创建了一个类,如下所示:
class ExampleModel(db.Model):
__tablename__ = 'example_table'
id = db.Column(db.Integer, primary_key=True)
text = db.Column(db.String(100))
然后我运行flask db migrate和flask db upgrade。在这些命令之后,创建了表,我可以正常地插入数据。
item = Exampl
我正在尝试使用heroku迁移我的flask数据库。我在本地应用程序中执行迁移,然后将更改提交到github并部署到heroku。然后,我执行了heroku run flask db migrate和heroku run flask db upgrade,根据日志,一切似乎都运行得很好,没有任何错误:
INFO [alembic.autogenerate.compare] Detected added column 'users.active'
INFO [alembic.autogenerate.compare] Detected added column 'us
我在填充大型数据库时遇到了问题,请帮助我。
我跟踪了医生。
sudo su -s /bin/sh -c "magnum-db-manage upgrade" magnum
/usr/lib/python2.7/site-packages/pymysql/cursors.py:170:警告:(3719,u"'utf8‘目前是字符集UTF8MB3的别名,但在以后的版本中将是UTF8MB4的别名。请考虑使用UTF8MB4以使其明确。“)Self._query= alembic.runtime.migration (查询) INFO alembic.runtime.
我正在修改一个模型(添加一个新列),并且我有一个相应的迁移文件。我的目标是通过向新列添加一些数据来扩展此迁移。
我试图通过添加我自己的sql代码来修改迁移文件,以实现我的目标。修改后的almebic文件示例包含如下代码:
# below is the only line added by alembic
op.add_column('sample_table', sa.Column('new_column', sa.UnicodeText(), nullable=True))
# below lines are my own
my_obj = MyClass()
我已经创建了一个水瓶应用程序,目前有大约30种型号。到目前为止,当我在本地测试所有内容时,我有一个本地Postgresql容器,我将在该容器上使用SQLAlchemy().create_all()创建所有表。到目前为止效果很好。然而,我认为,为了使这个应用程序更好地为生产做好准备,我可能应该开始使用迁移,而不是每次进行模式更改时都运行create_all()。因此,我通过遵循实现了迁移命令,成功地运行了python manage.py db init,但是当我运行python manage.py db migrate时,我得到了一个相当长的堆栈跟踪,以ValueError: not enoug
我在一个使用alembic管理数据库迁移的团队中工作。我最近拉出了master,并尝试运行alembic upgrade heads。我收到了以下消息;
INFO [alembic.runtime.migration] Context impl PostgresqlImpl.
INFO [alembic.runtime.migration] Will assume transactional DDL.
ERROR [alembic.util.messaging] Requested revision a04c53fd8c74 overlaps with other requested re
我运行了一个迁移来为一个SQLite应用程序创建表。虽然数据库文件存在并且我可以打开它,但我看不到表。当我试图创建一个用户时,我会得到一个“没有这样的表”错误。为什么即使我运行迁移,表也不存在?我怎么用这些桌子?
$ python manage.py db migrate
INFO [alembic.migration] Context impl SQLiteImpl.
INFO [alembic.migration] Will assume non-transactional DDL.
INFO [alembic.autogenerate.compare] Detected added
我在alembic中有一些迁移,并尝试运行alembic upgrade head以更新我的DB以进行修订,但在某些情况下,我有表,这些表已经存在,所以我有一个错误:
alembic upgrade head
INFO [alembic.runtime.migration] Context impl PostgresqlImpl.
INFO [alembic.runtime.migration] Will assume transactional DDL.
INFO [alembic.runtime.migration] Running upgrade -> 3137cf88d8
我使用管理数据库迁移,并且希望使用alembic init生成的默认文件,而不需要修改env.py (例如)或alembic.ini (例如,)来管理脚本中的数据库迁移。
例如,我想使用一个基于的脚本,如下所示:
import os
from alembic.config import Config
from alembic import command
from myapp import db
alembic_cfg = Config(os.path.join(os.path.abspath(os.path.dirname(__file__)), 'alembic.ini'