gpt4 book ai didi

python - 如何使用python脚本进行数据库迁移?

转载 作者:太空狗 更新时间:2023-10-29 22:14:50 25 4
gpt4 key购买 nike

是否可以从 python 脚本进行迁移?

我正在尝试在没有 shell 的 Heliohost 上使用 django,但我可以使用 python 脚本。

something like

from django import shell
shell.main(['mysite/manage.py', 'migrate'])

编辑

使用来自@Shadow 的输入,我尝试将此代码放入 views.py 文件中

def migrate(request):
django.setup()
from django.core.management import call_command
call_command("migrate", interactive=False)
return HttpResponse("Final Migration Successful")

然后访问映射到 migrate 的 url,返回“最终迁移成功”

然后我试了一下数据库

from .models import Question


class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')

给我错误:

(1146, "Table 'usr_mydb.polls_question' doesn't exist")

来自 Django 教程:

绕过manage.py

如果您不想使用 manage.py,没问题。只需将 DJANGO_SETTINGS_MODULE 环境变量设置为 mysite.settings,启动普通 Python shell,然后设置 Django:

>>> import django
>>> django.setup()

如果这引发了 AttributeError,您可能正在使用与本教程版本不匹配的 Django 版本。您需要切换到较旧的教程或较新的 Django 版本。

您必须从 manage.py 所在的同一目录运行 python,或者确保该目录位于 Python 路径上,这样 import mysite 才能正常工作。

有关所有这些的更多信息,请参阅 django-admin 文档。

但是怎么办python manage.py <command>使用 django.setup()文档中没有任何地方。

最佳答案

您可以使用 call_command运行 django 管理命令。

这里是调用migrate的例子;

from django.core.management import call_command
call_command("migrate", interactive=False)

我有 interactive=False 因为它在持续集成服务器上运行 - 但根据您的使用情况,您可能希望忽略它。

关于python - 如何使用python脚本进行数据库迁移?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46701614/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com