【问题标题】:Using django as an ORM [duplicate]使用 django 作为 ORM [重复]
【发布时间】:2016-09-23 11:39:42
【问题描述】:

我正在探索使用 django 作为 ORM 并且有一个基本问题,使用 eclipse,我能够加载 django,创建一个项目,在 settings.py 文件中设置我的数据库连接并运行

manage.py inspectdb

成功创建 models.py 文件的命令,所以现在我只剩下结构了(所有人都熟悉)

项目名称

---项目名称

-----settings.py

-----urls.py

------wsgi.py

---manage.py

---models.py

现在我希望使用 django 的方式只是与我在 models.py 中创建的数据库进行交互的更好方式(而不是作为 web 服务、restful api 或类似的东西)

当我尝试一些简单的代码时:

import models
import django
django.setup()
my_model = models.SomeDefinedModel.objects.all()
for mod in my_model:
  print mod

我遇到了一些异常:

django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.

想要做的就是查询数据库后面的表

SomeDefinedModel

构建自(使用 inspectdb 命令)

这可能吗?我一直在互联网上搜索,似乎无法找到将其用作访问层的方法。

谢谢-

【问题讨论】:

    标签: python django orm


    【解决方案1】:

    这样做非常烦人。我已经做了几次,并且只针对管理我在 django 应用程序中使用的数据的脚本。感觉真的很hacky,如果你想要的只是ORM,我不推荐使用Django,因为它会加载你不需要的所有其他东西。如果您只想要一个 ORM,请使用 SQLAlchemy。

    如果这仍然不能说服你,下面是我为守护进程所做的:

    您首先要做的是设置一个环境变量,告诉 django 在哪里可以找到您的设置,然后您必须告诉 django 进行设置。然后你就可以开始使用 Django 的东西了。完成所有这些之后,您就可以开始导入模型了。 这是我如何做到的一个例子:

    import os
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "yourproject.settings")
    import django
    django.setup()
    #Rest of your code
    

    再次重申,如果您不构建网站或 web 应用程序,我强烈建议您不要使用 Django。当您只想使用 1% 的 django 时,这将使您的应用程序大 100 倍。 SQLAlchemy 甚至可能是更好的 ORM。在过去的几天里,我一直在玩它,我觉得我可以编写更复杂的 SQL。链接到 SQLAlchemy:http://www.sqlalchemy.org/

    【讨论】:

    • 同意。 Django ORM 带来了各种各样的好东西,你几乎不需要。为工作使用正确的工具。
    • 非常感谢,我去看看!
    猜你喜欢
    • 2010-10-30
    • 2011-10-15
    • 2021-10-08
    • 2011-03-11
    • 2017-05-03
    • 1970-01-01
    • 2012-05-28
    • 1970-01-01
    • 2011-05-06
    相关资源
    最近更新 更多