我有一个非django项目,我想将django模型用于数据访问层。
在requirements.txt
中添加了模型库
django-model-utils==3.1.1
并将其设置如下:
from django.conf import settings
from django.db import models
settings.configure(
DATABASE_ENGINE='django.db.backends.mysql',
DATABASE_NAME='***',
DATABASE_USER='***',
DATABASE_PASSWORD='***',
DATABASE_HOST='***',
DATABASE_PORT='***')
class Bus(models.Model):
class Meta:
db_table = 'my_custom_bus'
bus_name = models.CharField(max_length=20)
bus_description = models.CharField(max_length=100)
但是,当我运行上面的代码时,我得到了以下错误:django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.
为了修复上面的错误,我运行了:
import django
django.setup()
现在,当我尝试的时候,我得到:
Bus doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS
我是在这里缺少了一些设置,还是只有python中的轻量级模型?
发布于 2018-12-20 06:58:54
(这是个老问题,但我会回答,也许能帮到别人。)
选项1(建议)
看到评论,你提到:
在我的特殊情况下,sqlalchemy很适合从apis下载数据并保存在数据库中的一组脚本。
在某些情况下(如您所提到的),您可以使用django管理命令。例如,如果您想执行一些与django模型相关的任务,并且应该在后台运行。就像一些crontab作业一样,比如每5分钟更新一次数据库字段,或者执行与一些apis相关的脚本,这些apis应该运行和更新数据库模型。
为此,创建如下所示的管理命令:
management
。然后向其添加一个空的__init__.py
文件。接下来,在该文件夹中创建另一个名为commands
的文件夹,然后将另一个空__init__.py
添加到commands
文件夹中。现在在commands
文件夹中创建脚本文件。例如,test_script.py
。test_script.py
中添加以下内容:
从django.core.management.base导入BaseCommand类命令(BaseCommand):def句柄(self,*args,**kwargs):#在这里添加脚本代码。python manage.py test_command
选项2
对于python sqlalchemy
,有一个强大的ORM。如果不想使用django的任何部分或创建另一个django,并将非django项目的代码添加到其中,则可以使用它。但是请记住,您也需要用sqlalchemy定义django模型设计。但要做到这一点并不难。
选项3
正如我的朋友们在评论中建议的那样,您可以配置另一个项目,将您现有的django项目作为应用程序使用。遵循在Django之外使用Django数据库层?
https://stackoverflow.com/questions/49015994
复制相似问题