Skip to main content
 首页 » 编程设计

python之我想在 OS shell 中启动一个包含从 django 库导入的 python 文件

2024年12月31日26duanxz

我有一个非常简单的案例,我想用 python 运行一个脚本

myscript.py:

from models import Company 
c = Company(number="1234567890", name="Company name") 

models.py:

from django.db import models 
 
class Company(models.Model): 
    number = models.CharField("company number", max_length=20, unique=True) 
    name = models.CharField("company name", max_length=30, unique=True) 
 
    class Meta: 
        verbose_name = "Company" 
        verbose_name_plural = "Companies" 

我想运行 python myscript.py 或类似 python manage.py execute_file myscript.py

我知道我的问题很简单,我可以导入 python manage.py shell 环境,但这不是重点。我可以以更简单的方式运行它吗?

请您参考如下方法:

是的,Django 支持:您定义一个自定义命令。它有一些支持,例如以更方便的方式解析命令参数。

您首先需要定义一个与您想要的命令同名的文件(所以这里是 myscript.py)。这应该放在 app/management/commands/ 目录中(其中 app 是您系统的 应用程序)。那么文件树看起来像:

app/ 
    __init__.py 
    <b>management/</b> 
        <b>__init__.py</b> 
        <b>commands/</b> 
            <b>__init__.py</b> 
            <b>myscript.py</b>

如果您之前没有构造过任何自定义管理命令,您可能需要构造粗体文件。 __init__.py 文件只是空文件。

然后你的命令看起来像:

# app/management/commands/myscript.py 
 
from django.core.management.base import BaseCommand 
from models import Company 
 
class Command(BaseCommand): 
 
    def handle(self, *args, **options): 
        c = Company(number="1234567890", name="Company name")

请注意,这个脚本实际上没有做太多:您构建了一个Company,但您没有将它存储在数据库中,所以这意味着程序通常会只是停止,或者在输入无效的情况下引发错误。

然后您可以调用您的脚本:

python3 manage.py myscript 

如果您寻求帮助(使用 python3 manage.py help),命令也会被列出。

Django tutorial on custom commands 更深入地解释了您可以做什么来解析命令、添加帮助文本等。