Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用python脚本进行数据库迁移?_Python_Django - Fatal编程技术网

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

如何使用python脚本进行数据库迁移?,python,django,Python,Django,可以从python脚本进行迁移吗 我正在尝试在Heliohost上使用django,因为它没有shell,但我可以使用python脚本 something like from django import shell shell.main(['mysite/manage.py', 'migrate']) 编辑 使用@Shadow的输入,我尝试将此代码放入views.py文件中 def migrate(request): django.setup() from django.co

可以从python脚本进行迁移吗

我正在尝试在Heliohost上使用django,因为它没有shell,但我可以使用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")
然后访问映射到迁移的url,该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管理文档

但是如何使用
django.setup()
执行
python manage.py
在文档中没有任何内容。

您可以使用它来运行django manage命令

下面是一个使用它调用migrate的示例

from django.core.management import call_command
call_command("migrate", interactive=False)
我有
interactive=False
,因为它在持续集成服务器上运行-但根据您的使用情况,您可能希望省略它。

基本上您需要:

  • 导入您的设置
  • 使用您的设置配置djnago
  • 设置django
  • 调用命令
如果您有一个python shell并且它位于项目的python路径内,那么一旦进入shell,您就可以执行以下操作:

>>> from myprojectpath import settings as myapp_defaults
>>> import django
>>> from django.conf import settings
>>> from django.core.management import call_command
>>> if not settings.configured:
        settings.configure(myapp_defaults)
>>> django.setup()
>>> call_command("migrate", interactive=False)

希望有帮助

创建的脚本应该保存在哪里?manage.py在哪里?或者settings.py在哪里?这个脚本如何知道您想要执行“python manage.py migrate”。在运行代码之前是否需要执行django.setup()。?在Heliohost上,我没有bash、python shell。我现在正在运行Django应用程序。我可以从django view.py文件运行迁移代码吗?如果您有到django项目文件的ftp。在python脚本中生成script.py save@Shadow代码。将脚本上载到myproject/myproject/myapp目录。在views.py中编写一个调用python脚本的视图。更新URL.py以指向视图。只要您访问该url,它就会为您运行迁移脚本。(这不是在主机上运行迁移的干净方法)谢谢。我已将该代码添加到视图本身。工作正常。我说我没有Python控制台。但我想我可以将其转换为脚本并尝试运行。
如果没有设置。配置:设置。配置(myapp_默认值)
对于我的案例来说不是必需的。