问题标签 [flask-migrate]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
postgresql - Postgresql 和烧瓶连接
我正在使用烧瓶python3
。
迁移脚本工作没有错误。主应用程序也运行良好。当我运行迁移时,我正在使用postgresql
一切运行正常,但是当我进入postgres
shell 时,我看不到任何正在创建的表。
模型.py
如您所见,我在那里有两个表,但我只user_info
在我的数据库中看到,因为我手动创建了它,但另一个表我看不到。
我不知道我是否以正确的方式设置了与数据库的连接,或者根本没有创建任何内容。
谢谢。
flask - 删除表后烧瓶迁移升级不起作用
我正在使用 SqlAlchemy 和 Flask-migrate 进行数据库迁移。我已经成功地初始化了数据库并使用以下内容进行了升级:
python manage.py db init
python manage.py db migrate # 创建迁移脚本faefc6a6c7ae,如下:
接着
python manage.py db upgrade # 实际执行迁移并在数据库中创建“用户”和“帖子”表。
现在我运行我的 test.py,其中包含以下代码行(除了其他代码):
现在,在 test.py 完成运行后,tearDown() 删除了数据库中的所有表。
在此之后,现在当我跑步时
python manage.py 数据库升级
它在控制台上给了我以下消息:
信息 [alembic.runtime.migration] 上下文 impl MySQLImpl。
INFO [alembic.runtime.migration] 将假定非事务性 DDL。
但根本没有真正创建相应的表。我有一个解决方法。所以如果我做一个:
python manage.py db migrate # 创建一个新的迁移脚本(与前一个没有太大不同),如下所示:
然后如果我这样做
python manage.py 数据库升级
再次创建表。
现在我想了解为什么没有创建表
python manage.py 数据库升级
是第一次运行吗? db migrate 创建的 2 个迁移脚本并没有太大的不同,或者是吗?那么,为什么升级本身第一次不能工作(当升级实际上有创建表的代码时),为什么当再次生成新脚本时它会完美工作(升级方法本身根本没有改变,因为与以前的迁移脚本相比?
python - 如何在 Flask/SQLAlchemy 模型中防止这种循环引用?
我的 Flask/SQLAlchemy 应用程序中有以下四个模型类(MyClassA
此处未显示第五个类,但作为参考):
使用Flask-Migrate命令创建此模式db init
,db migrate
并且db upgrade
工作正常。
但是,当我取消注释定义的行MyClassC.f_id
并再次尝试(删除migrations
目录后)时,我收到以下循环依赖错误:
sqlalchemy.exc.InvalidRequestError:初始化映射器 Mapper|MyClassV|my_classV 时,表达式 'MyClassC' 未能找到名称(“名称 'MyClassC' 未定义”)。如果这是一个类名,请考虑在定义了两个依赖类之后将此 relationship() 添加到该类中。
我要做的就是确保MyClassC.f_id
通过查询MyClassF
表来设置默认值。该检查应该在插入时进行——而不是在创建数据库时。所以我不明白为什么我现在收到这个错误。
db.relationship()
在执行我试图实现的数据库完整性规则时,如何使用(或任何其他技术)来解决这个循环依赖错误?
database - flask-migrate 用于多 tanent postgres 数据库
在我的烧瓶项目中,我在manage.py文件中写道:
我有两个模型,user和dashboard。这个想法是,在我的 postgres 数据库user
表中,默认情况下public schema
,在创建新用户后,我需要创建一个private schema
仪表板表的创建位置。
对于我们通常运行的默认公共模式python manage.py db migrate
。然后它将在默认公共架构中创建表。但是在我的情况下我应该怎么做?首先,我必须运行 migrate 命令以User
在公共模式中生成表。然后在用户表中添加成功的行后,我需要运行一个脚本来创建一个私有模式,在该模式dashboard
中将生成一个新表。我怎样才能做到这一点?
flask - 创建迁移时如何阻止烧瓶运行我的服务器?
每当我运行类似flask db migrate
或flask db upgrade
使用flask-migrate
框架的命令时,它总是开始在本地主机上运行我的应用程序,并且我必须CTRL+C
在允许服务器停止并生成迁移之前按退出。我怎样才能避免这种情况?
我遇到的另一个问题是,每当我运行时,它首先会在调试模式下运行它,然后在点击CTRL+C
退出后,它将再次在不打开调试模式的情况下在不同的端口上运行。我如何只限制与前者一起运行?谢谢。
flask - Flask Migrate 使用不同的 postgres 模式 ( __table_args__ = {'schema': 'test_schema']})
我正在尝试使用烧瓶、sqlalchemy 和 flask_migrate...
但是每次运行 manage.py migrate 时,alembic 总是将我的模型检测为新表。
我认为我将 table_args放在我的模型中以将表存储在不同的 postgres 模式中:
如果我删除模型的table_args行,烧瓶迁移工作正常。将我的表存储在 puclic postgres 模式中。
那么,如何在烧瓶中使用不同的 postgres 表模式?
谢谢!
flask - 找不到烧瓶终端命令
我发现这个 Stack Overflow 问题解释了 Flask 0.10 没有该flask
命令。我应该如何为 Flask-Migrate 初始化数据库?
我在关注Flask-Migrate的文档时发现了这个问题。安装软件包并添加配置后,init db
将无法运行。
flask - Flask 说“没有提供 FLASK_APP 环境变量”
我正在尝试运行 Flask 应用程序,flask run
但无论如何,我都会收到此错误:
我在我的项目中使用 virtualenv,我在端口 80 上运行应用程序,所以我以超级用户身份运行命令。最终,我只需要使用Flask-Migrate 的文档flask db init
中描述的命令,但需要能够找到应用程序来执行此操作。这是我尝试过的,但没有成功:flask
导出FLASK_APP
环境变量,确保它在我的 bash 配置文件中,然后激活 virtualenv
激活 virtualenv,然后导出FLASK_APP
以上两个带有完整路径,/Users/me/code/project/run.py
项目结构
到目前为止,没有任何效果,并且每种情况下的错误消息都是相同的。我能做些什么来解决这个错误?
python - 您可以在数据库迁移文件中的列之间复制/移动数据吗?
我有一个 SqlAlchemy/Flask 应用程序。在其中,我有一个名为MyModelA
. 这是它的样子:
现在,我正在添加一个子模型MyModelB
。这是它的样子:
然后我跑python manage.py migrate
。这是迁移文件中显示的内容:
我想编辑此迁移,以便为每个实例创建一个实例的MyModelA
子记录,并将其设置为。我该怎么做?MyModelB
MyModelB.my_field2
MyModelA.my_field1
请显示升级和降级代码。
python - 如何找到使用 flask-migrate 创建的最新迁移?
我的烧瓶应用程序现在有 20 多个迁移flask-migrate
,它们都有散列文件名,如:389d9662fec7_.py
我想仔细检查我运行的最新迁移的设置,但不想打开每个文件来查找正确的文件。我可以创建一个新的虚拟迁移并查看它引用的内容,down_revision
但这似乎很笨重。
我正在使用flask-script
,flask-migrate
和flask-sqlalchemy
我的问题是:如何快速找到我创建的最新迁移?