Django 集成已有的数据库和应用.pdf

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Django 集成已有的数据库和应用.pdf

Dj ango 集成已有的数据库和应⽤ Dj ango最适合于所谓的green-field开发,即从头开始的⼀个项⽬,正如你在⼀块还长着 青草的未开垦的⼟ 上从零开始建造⼀栋建筑⼀般。 然⽽,尽管Dj ango偏爱从头开始 的项⽬,将这个框架和以前遗留的数据库和应⽤相整合仍然是可能的。 本章就将介绍 ⼀些整合的技巧。 与遗留数据库整合 Dj ango的数据库层从Python代码⽣成SQL schemas—但是对于遗留数据库,你已经拥有 SQL schemas. 这种情况,你需要为已经存在的数据表创建model . 为此,Dj ango ⾃带了⼀ 个可以通过读取您的数据表结构来⽣成model的⼯具. 该辅助⼯具称为inspectdb ,你可以 通过执⾏manage.py inspectdb来调⽤它. 使⽤ inspectdb inspectdb⼯具⾃省你配置⽂件指向的数据库,针对每⼀个表⽣成⼀个Dj ango模型,然 后将这些Python模型的代码显⽰在系统的标准输出⾥⾯。 下⾯是⼀个从头开始的针对⼀个典型的遗留数据库的整合过程。 两个前提条件是安装 了Dj ango和⼀个传统数据库。 通过运⾏dj ango-admin .py startproject mysite (这⾥ mysite 是你的项⽬的名 字)建⽴⼀个Dj ango项⽬。 好的,那我们在这个例⼦中就⽤这 个 mysite 作为项⽬的名字。 编辑项⽬中的配置⽂件, mysite settings.py ,告诉Dj ango你的数据库连接参 数和数据库名。 具体的说,要提 供 DATABASE_NAME , DATABASE_ENGINE , DATABASE_USER , DATABASE_P 和DATABASE_PORT 这些配置信息.。 (请注意其中的⼀些设置是可选 的。 更多信息参见第5章) 通过运⾏ python mysite manage .py startapp myapp (这⾥ myapp 是你的应 ⽤的名字)创建⼀个Dj ango应⽤。 这⾥我们使⽤myapp 做为应⽤名。 运⾏命令 python mysite manage .py inspectdb 。这将检查 DATABASE_NAME 数据库中所有的表并打印出为每张表⽣成的模型 类。 看⼀看输出结果以了解inspectdb能做些什么。 将标准shell的输出重定向,保存输出到你的应⽤的 models.py ⽂件⾥: python mysite manage .py inspectdb mysite myapp models.py 编辑 mysite myapp models.py ⽂件以清理⽣成的 models 并且做⼀些必要 的⾃定义。 针对这个,下⼀个节有些好的建议。 清理⽣成的Models 如你可能会预料到的,数据库⾃省不是完美的,你需要对产⽣的模型代码做些许清 理。 这⾥提醒⼀点关于处理⽣成 models 的要点: 数据库的每⼀个表都会被转化为⼀个model类 (也就是说,数据库的表和 model 类之间是⼀对⼀的映射) 。 这意味着你需要为多对多连接的表,重 构其models 为 ManyToManyField 的对象。 所⽣成的每⼀个model 中的每个字段都拥有⾃⼰的属性,包括id主键字 段。 但是,请注意,如果某个model没有主键的话,那么Dj ango会⾃动 为其增加⼀个id主键字段。 这样⼀来,你也许希望移除这样的代码⾏。 id = models.IntegerField(primary_key=True) 这样做并不是仅仅因为这些⾏是冗余的,⽽且如果当你的应⽤需要向这 些表中增加新记录时,这些⾏会导致某些问题。 每⼀个字段类型,如CharField、DateField , 是通过查找数据库列类型如 VARCHAR ,DATE来确定的。如果inspectdb⽆法把某个数据库字段映射到 model字段上,它会使⽤TextField字段进⾏代替,并且会在所⽣成model 字段后⾯加⼊Python注释“该字段类型是猜的” 。 对这要当⼼,如果必要 的话,更改字段类型。

文档评论(0)

tangtianbao1 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档