将django orm与独立脚本一起使用

django-standalone的Python项目详细描述


-*-降价-*-

ject persistence.

当然,最好的方法是设置一个完整的django项目,并使用settings.py文件和django_settings_模块
环境变量。但是,当您只想使用一些小工具
只需要一些sqlite3数据库来存储一些
数据,而不想使用完整的django项目时,即
这个小库发挥作用的地方。


到目前为止,它只包含两个模块:

standalone.conf handles所有配置都需要,设置

standalone.models为您的模型携带一个基类,该基类会自动告诉python,实际上创建的所有模型
都位于standalone django应用程序中,即使它们
位于应用程序命名空间之外的另一个文件中。

作为警告:这可能被视为巫毒,坏魔术或只是
一个简单的愚蠢的想法,一些人。而官方的方式可能对你来说是个更好的主意。我自己正好喜欢能够轻松创建不依赖于某些预定义项目结构的独立可执行脚本。


sudo easy_install django standalone





>或者您可以克隆此存储库并运行包含的安装程序。py


要运行包含的测试用例,只需运行以下命令:


---——————————————————————————————————ave django模块在脚本中工作。如果要使用的不仅仅是orm,则必须添加其他设置,例如,如果要使用模板模块,则必须添加template目录。

现在您只需使用脚本中提供的base类定义一组模型。所需的模块独立。models
从django.models重新导出所有内容,因此您只需要一个。


从独立导入models

mymodel类(models.standalonemaodel):

col1=models.charfield(最大长度=1000)
col2=models.integerfield()
col3=models.booleanfield()

def\uu unicode\uu(self):
return self.col1

这将创建模型并使其在脚本中直接可用。此外,它还将使它们在
模块独立中可用。模块访问的模型可以导入脚本中的
,也可以导入django shell中的访问。

roper
python模块不会发生这种情况,因为它们很容易被模块或原来的
模块中的shell访问。如果出于任何原因,您也需要强制安装到
standalone.models中(例如,测试使用此
以确保在标准位置可以访问模型,即使
在模块中定义),您可以添加一个类变量
强制安装具有真实值的
standalone.models。
如果您想通过访问模型来访问django shell,
您只需使用标准方法从脚本访问管理命令即可:

来自django.core.management import call_command
call_command("shell")


同样的方法也可以用于实际创建表。将
以下行直接放在模型声明之后,如果数据库表还不存在,脚本将自动设置它们。


---——

您也可以在standalonemaodel上创建具有基于
的模型定义的库模块。不过,它们不会被修补成独立的.models,
,因此您必须通过它们自己的模块来引用它们。它们可以使用符号名引用脚本中的模型。


再次引用这个库模型,只需执行如下操作:


from mylibrary.mymodels import myothermodel


class和yetanothermodel(models.standalonemaodel):

col1=models.foreignkey(myothermodel)

强制将模型安装到standalone.models中,以确保可以从其他位置访问它。其中一种情况是测试用例中的设置方法。为此,您可以定义如下选项:


Class AllwaysInstalledModel(Models.StandaloneModel):
Force_install_Standalone_Models=true


所有
都连接到standalone.models作为全局值。

警告:即使模型没有安装到standalone.models中,
它们都将被视为独立应用程序的模型。
这意味着,它们的表名都将以数据库中的"standalone"开头哎呀!这与Django只喜欢链接到某些已安装的Django应用程序的模型定义,而Django Standalone作为在脚本上下文中定义的所有模型的保护伞应用程序的行为有关。

---

如有问题,可在GB的RFC1437.de上完成。尽管如此,正如
许可证所说,本质上它是一个"如果你打破了它,你必须保留
碎片"的东西。当然,我总是喜欢听战争故事。只要
不要怪我,如果这个小小的库杀死了你的生产服务器,猎杀了你的老板,并消除了你公司的所有开支记录。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何将cassandra中的行数据转换为与列相关的嵌套json   java如何使用jcr XPath在jcr:content/@jcr:data中搜索?   java在使用openCV进行安卓开发时如何利用手机的广角镜头   java解析扩展了接口,结束了一个潜在的无限循环   位置服务的@Override方法中存在java Android应用程序错误   java本地线程的用途和需求是什么   具有左右子访问的java节点树遍历   java验证JsonWebToken签名   JUL日志处理程序中的java日志记录   嵌入式Java读取给定时间段的串行数据。   java有没有办法从多个URL获取多个图像?   java线程通过等待intent阻止自己发送intent   java Spring MVC解析多部分内容请求   java JPA/Hibernate静态元模型属性未填充NullPointerException   java格式错误的字符(需要引号,得到I)~正在处理   java为什么PrintWriter对象抛出FileNotFoundException?   java Neo4j未正确保存标签   java IE不加载图像