Python 使用Django ORM作为独立的
可能的重复项:Python 使用Django ORM作为独立的,python,django,postgresql,orm,Python,Django,Postgresql,Orm,可能的重复项: 我想使用Django ORM作为独立的。尽管在谷歌搜索了一个小时,我仍然有几个问题: 是否需要我使用setting.py、/myApp/directory和modules.py文件设置Python项目 我可以创建一个新的models.py并运行syncdb,让它自动设置表和关系,还是只能使用现有Django项目中的模型 关于PYTHONPATH,似乎有很多问题。如果您不调用现有模型,是否需要这样做 我想最简单的方法是,有人发布一个基本模板或流程演练,澄清文件的组织结构,例
我想使用Django ORM作为独立的。尽管在谷歌搜索了一个小时,我仍然有几个问题:
- 是否需要我使用setting.py、/myApp/directory和modules.py文件设置Python项目
- 我可以创建一个新的
并运行models.py
,让它自动设置表和关系,还是只能使用现有Django项目中的模型syncdb
- 关于
,似乎有很多问题。如果您不调用现有模型,是否需要这样做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。)。啊,好的,我找到了答案,并将为任何试图做同样事情的人发布解决方案 此解决方案假定您要创建新模型 首先创建一个新文件夹来存储文件。我们称之为“独立”。在“独立”中,创建以下文件:
__init__.py
myScript.py
settings.py
显然,“myScript.py”可以命名为任何名称
接下来,为您的模型创建一个目录
我们将把我们的模型目录命名为“myApp”,但要知道这是项目中的一个普通Django应用程序,因此,请根据您正在编写的模型集合适当地命名它
在此目录中创建2个文件:
__init__.py
models.py
您需要从现有Django项目或从Django安装路径获取manage.py的副本:
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 *
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
from django.db import models
class MyModel(models.Model):
field = models.CharField(max_length=255)
并将其添加到settings.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 *
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
from django.db import models
class MyModel(models.Model):
field = models.CharField(max_length=255)
最后是您的myApp/models.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 *
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
from django.db import models
class MyModel(models.Model):
field = models.CharField(max_length=255)
就这样。现在,要让Django管理您的数据库,请在命令提示符下导航到/standalone目录并运行:
manage.py sql MyApp
威廉·布伦德尔(William Brendel)链接的问题有最好的答案,但也有更多的讨论。我想知道你是如何“搜索谷歌1小时”并根据范加尔(Van Gale)和威廉·布伦德尔(William Brendel)的评论指出问题的。这不是一个“完全重复的问题”——虽然那篇文章帮助我找到了答案,但它并不是我想要的。我希望关闭为“完全重复”不会改变我下面的解决方案的可搜索性,因为它更加彻底,以及如何创建在其他任何地方都不会被转换的模型。Becominguru:因为我所有的搜索都特定于使用Django的ORM。我没有想到搜索像如何使用parts Django这样通用的东西,我已经创建了一个模板Django项目,允许您这样做。请更新新的或不同的信息。请将您的答案添加到该版本的问题中。在我的情况下,需要它工作(python2.7),我需要将
(“myApp”)
更改为(“myApp”),)
,我还需要将顶级目录附加到sys.path
。此外,settings.py
可以为空(对我有效)-无需复制连接信息。如果在settings.py.configure()中提供所有相同的值,那么settings.py
有什么意义?