将 Django ORM 用作独立的 [重复]
Posted
技术标签:
【中文标题】将 Django ORM 用作独立的 [重复]【英文标题】:Use Django ORM as standalone [duplicate] 【发布时间】:2010-10-30 13:54:52 【问题描述】:可能的重复:Use only some parts of Django?Using only the DB part of Django
我想独立使用 Django ORM。尽管在 Google 上搜索了一个小时,但我仍然有几个问题:
是否需要我使用 setting.py、/myApp/ 目录和 modules.py 文件来设置我的 Python 项目? 我可以创建一个新的models.py
并运行syncdb
让它自动设置表和关系,还是我只能使用现有 Django 项目中的模型?
似乎有很多关于PYTHONPATH
的问题。如果您不调用现有模型,是否需要这样做?
我想最简单的事情是让某人发布一个基本模板或流程演练,阐明文件的组织,例如:
db/
__init__.py
settings.py
myScript.py
orm/
__init__.py
models.py
以及基本要领:
# settings.py
from django.conf import settings
settings.configure(
DATABASE_ENGINE = "postgresql_psycopg2",
DATABASE_HOST = "localhost",
DATABASE_NAME = "dbName",
DATABASE_USER = "user",
DATABASE_PASSWORD = "pass",
DATABASE_PORT = "5432"
)
# orm/models.py
# ...
# myScript.py
# import models..
以及是否需要运行类似:django-admin.py inspectdb
...
(哦,如果这改变了有关命令行参数的任何内容,我正在运行 Windows。)。
【问题讨论】:
William Brendel 链接的问题有最佳答案,但也请参阅***.com/questions/579511 进行更多讨论。 我想知道您是如何“在 google 上搜索 1 小时”并获得了 Van Gale 和 William Brendel 的 cmets 指出的问题。 它不是“完全重复的”——虽然那篇文章帮助我找到了答案,但它并不是我想要的。我希望关闭为“完全重复”不会改变我在下面的解决方案的可搜索性,因为它更彻底,以及如何创建在其他任何地方都没有的模型。 becomingGuru:因为我所有的搜索都是针对使用 Django 的 ORM。我没想到要搜索像如何使用部件 django 这样一般的东西 我创建了一个模板 Django 项目,它允许您这样做。 github.com/dancaron/Django-ORM 【参考方案1】:嗯,好的,我想通了,并将为任何尝试做同样事情的人发布解决方案。
此解决方案假定您要创建新模型。
首先创建一个新文件夹来存储您的文件。我们将其称为“独立”。在“standAlone”中,创建以下文件:
__init__.py
myScript.py
settings.py
显然“myScript.py”可以命名为任何名称。
接下来,为您的模型创建一个目录。
我们将模型目录命名为“myApp”,但要意识到这是项目中的普通 Django 应用程序,因此,请根据您正在编写的模型集合适当地命名它。
在此目录中创建 2 个文件:
__init__.py
models.py
您将需要来自现有 Django 项目的 manage.py 副本,或者您可以从 Django 安装路径中获取副本:
django\conf\project_template\manage.py
将 manage.py 复制到您的 /standAlone 目录。好的,你现在应该有以下结构:
\standAlone
__init__.py
myScript.py
manage.py
settings.py
\myApp
__init__.py
models.py
将以下内容添加到您的 myScript.py 文件中:
# settings.py
from django.conf import settings
settings.configure(
DATABASE_ENGINE = "postgresql_psycopg2",
DATABASE_NAME = "myDatabase",
DATABASE_USER = "myUsername",
DATABASE_PASSWORD = "myPassword",
DATABASE_HOST = "localhost",
DATABASE_PORT = "5432",
INSTALLED_APPS = ("myApp")
)
from django.db import models
from myApp.models import *
并将其添加到您的 settings.py 文件中:
DATABASE_ENGINE = "postgresql_psycopg2"
DATABASE_NAME = "myDatabase"
DATABASE_USER = "myUsername"
DATABASE_PASSWORD = "myPassword"
DATABASE_HOST = "localhost"
DATABASE_PORT = "5432",
INSTALLED_APPS = ("myApp")
最后是您的 myApp/models.py:
# myApp/models.py
from django.db import models
class MyModel(models.Model):
field = models.CharField(max_length=255)
就是这样。现在让 Django 管理您的数据库,在命令提示符下导航到我们的 /standalone 目录并运行:
manage.py sql MyApp
【讨论】:
请用新的或不同的信息更新***.com/questions/302651/…。请在该版本的问题中添加您的答案。 在我的情况下,为了让它工作(python2.7),我需要将("myApp")
更改为("myApp",)
,我还需要将***目录附加到sys.path
。此外,settings.py
可以为空(为我工作) - 无需复制连接信息。
如果您在settings.configure()
调用myScripy.py
中提供所有相同的值,那么settings.py
的意义何在?以上是关于将 Django ORM 用作独立的 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
Django ORM:未继承子级的字段和值。对象重复。 (使用Django管理界面)