- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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注释“该字段类型是猜的” 。 对这要当⼼,如果必要
的话,更改字段类型。
您可能关注的文档
- CBW系列大电流贴片磁珠规格书.pdf
- CCAR-66基本技能培训计划.PDF
- CCS下载操作指导.PDF
- centos中GIT服务器搭建及使用密钥连接.pdf
- CFB3-80W电能表专用断路器.PDF
- CGMCC1593发酵生产丁二酸的影响.PDF
- Chrome开发工具 分析 JavaScript 性能.pdf
- CNC控制板V43简单使用说明.PDF
- CNDS程序实习说明一CNDS程序实习内容.PDF
- CR6848 电源IC规格书.pdf
- Unit3Ithastwobigeyes.(课件)湘鲁版英语三年级上册.pptx
- 高考地理一轮复习专项训练《我国区域发展战略》练习.docx
- M9U2课文知识复习巩固练习-2023-2024学年三年级英语上册单元速记巧练(三起).docx
- 八款餐厅背景墙效果图精湛色彩展示活力.pptx
- Unit5DoyoulikepearsPartB(课件)人教PEP版英语三年级下册(9).pptx
- Unit3IsthisyourpencilSectionB2a2c课件人教版七年级英语上册(19).pptx
- Unit2TeachersLesson3(课件)人教新起点版英语五年级上册3.pptx
- Unit1Honestyandresponsibility高频词汇知识点清单-2022-2023学年高中英语牛津译林版(2020)选择性.docx
- Unit7单词短语句子英译汉汉译英默写小测人教版英语七年级下册.docx
- 第三章烃的衍生物练习题高二下学期化学人教版选择性必修3.docx
文档评论(0)