将Django ORM作为独立使用

66 投票
1 回答
44307 浏览
提问于 2025-04-15 11:58

可能的重复问题:
只使用Django的某些部分?
只使用Django的数据库部分

我想单独使用Django的ORM(对象关系映射)。虽然我在谷歌上搜索了一个小时,但我还是有几个问题:

  • 我需要为我的Python项目设置一个setting.py文件,创建一个/myApp/目录和一个modules.py文件吗?
  • 我可以创建一个新的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,这会影响命令行参数吗?)

1 个回答

39

好的,我搞明白了,接下来我会把解决方案分享给那些想做同样事情的人。

这个解决方案假设你想创建新的模型。

首先,创建一个新的文件夹来存放你的文件。我们叫它“standAlone”。在“standAlone”文件夹里,创建以下文件:

__init__.py
myScript.py
settings.py

显然,“myScript.py”可以随便命名。

接下来,创建一个用来存放模型的目录。

我们把这个模型目录命名为“myApp”,但要明白,这其实是一个正常的Django应用,所以你应该根据你要写的模型集合来给它起个合适的名字。

在这个目录里创建两个文件:

__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

撰写回答