`
hideto
  • 浏览: 2683183 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

翻译www.djangobook.com之第十七章:与遗留系统和数据库集成

阅读更多
The Django Book:第17章 与遗留系统和数据库集成

尽管Django最适合从零开始开发项目--所谓的"绿色领域"开发--将框架与遗留系统和数据库集成是可能的,本章解释一些
集成策略

与遗留数据库集成
Django的数据库层从Python代码生成SQL schemas--但是对于遗留数据库,你已经拥有SQL schemas,这种情况下你需要为你
已经存在的数据库表写模型(由于性能的原因,Django的数据库层不支持通过运行时自省数据库的不工作的对象-关系映射,
为了使用数据库API,你需要写模型代码),幸运的是,Django带有通过阅读你的数据库表规划来生成模型代码的辅助工具
该辅助工具称为manage.py inspectdb

使用inspectdb
inspectdb辅助工具检查你的settings文件指向的数据库,决定你表示你的表的Django模型并打印Python模型代码到标准输出
这里是典型的从零开始的遗留数据库处理的过程,唯一的前提是Django已经安装并且你有一个遗留数据库
1,通过运行django-admin.py startproject mysite(这里mysite是你的项目名)创建Django项目,我们将在例子中使用mysit
e作为项目名
2,在项目中编辑settings文件mysite/settings.py来告诉Django你的数据库连接参数是什么以及数据库名是什么,特别的,
你将想指定DATABASE_NAME,DATABASE_ENGINE,DATABASE_USER,DATABASE_PASSWORD,DATABASE_HOST和DATABASE_PROT设置
3,通过运行python mysite/manage.py startapp myapp(这里myapp是你的app名)来在你的项目中创建Django app,我们这里
将使用myapp作为项目名
4,运行命令python mysite/manage.py inspectdb,这将检查DATABASE_NAME数据库中的表并为每个表打印模型类,看看输出
来了解inspectdb可以做什么事情
5,在你的app里通过使用标注shell输出重定向保存输出到models.py文件:
python mysite/manage.py inspectdb > mysite/myapp/models.py
6,编辑mysite/myapp/models.py文件,整理生成的模型并且做你需要的自定义,我们将在下一节对此给出一些提示

整理生成的模型
你可能料想到了,数据库省查不是完美的,你将需要做一些轻量的结果模型代码的整理,这里是处理生成的模型的一些指示:
1,每个数据库表都被转换为一个模型类--即,在数据库表和模型类之间有一个一对一映射,这意味着你将需要对任何多对多
链接表重整模型为ManyToManyField对象
2,每个生成的模型对每个域有一个属性--包括id主键域,尽管如此,如果模型没有主键,调用它Django会自动添加id主键域
这样,如果你非常肛门,你将像删除任何像这样的行,因为它们是冗余的:
id = models.IntegerField(primary_key=True)
3,每个域的类型(如CharField,DateField)通过查看数据库列类型(如VARCHAR,DATE)来决定,如果inspectdb不能映射一个
列的类型到模型域,它将使用TextField并在生成的模型中该域附近插入Python注释"该域类型是猜的",当心它,如果需要则
对应的改变域类型
4,如果数据库列名是Python保留字(如pass,class或者for),inspectdb将添加'_field'到属性名,例如,如果一个表有一
个列for,生成的模型将有一个域for_field,db_column属性设置为'for'.inspectdb将插入Python注释'域被重命名因为它是
Python保留字'到域附近
5,如果你的数据库包含引用到其它表的表(大部分数据库这样做),你可能需要重新安排生成的模型的顺序来使引用其它模型
的模型正确的排序,例如,模型Foo有一个ForeignKey到模型Bar,则模型Bar应该在模型Foo之前定义
6,inspectdb为PostgreSQL,MySQL和SQLite检测主键,即它在合适的地方插入primary_key=True,对于其它数据库,你将需
要在每个模型中为至少一个域插入primary_key=True,因为Django模型需要有一个primary=True的域
7,外键检测只与PostgreSQL和某些类型的MySQL表工作,其他情况下,外键域将生成为IntegerField(假设外键列为INT列)

更多
本章你还想看到什么内容?你对Django与遗留系统/数据库集成有什么问题?在本段留下注释来让我们知道
分享到:
评论

相关推荐

    The Django Book 2.0中文译本.pdf

    第十七章: 中间件 完成度 95.08% 阅读 翻译 第十八章: 集成已有的数据库和应用 完成度 100.00% 阅读 翻译 第十九章: 国际化 完成度 100.00% 阅读 翻译 第二十章: 安全 完成度 100.00% 阅读 翻译

    djangoBook 中文 v1.0 v2.0 合并美化版 原创

    Django book 1.0, Django book 2.0 美化合并版, 版权归属 http://djangobook.py3k.cn/, 美化合并 by Rogues, ...第十七章:中间件 第十八章:集成已有的数据库和应用 第十九章:国际化 第二十章:安全

    The Django Book 2.0中文修正版

    根据http://djangobook.py3k.cn/2.0/最新文档资源,制作...第十七章: 中间件 完成度 95.08% 第十八章: 集成已有的数据库和应用 完成度 100.00% 第十九章: 国际化 完成度 100.00% 第二十章: 安全 完成度 100.00%

    Django_中文教程.rar

    Django book 2.0 的中文翻译。 第一章:介紹Django 第二章: 入门 第三章: 视图和URL配置 第四章:模版 ...第十七章: 中间件 第十八章: 集成已有的数据库和应用 第十九章: 国际化 第二十章: 安全

    Django Book 2.0中文译本_understandingb8a_Book2_python_django_

    缓存机制 完成度 100.00% 阅读 翻译第十六章: 集成的子框架 django.contrib 完成度 99.72% 阅读 翻译第十七章: 中间件 完成度 95.08% 阅读 翻译第十八章: 集成已有的数据库和应用 完成度 100.00% 阅读 翻译第十...

    中文版django book

    ### 第十七章:集成已有数据库和应用 有时候需要将现有的数据库或应用程序集成到 Django 项目中。本章将提供一些策略和技术,以便顺利实现这种集成。 ### 第十八章:国际化 国际化支持使得 Django 应用能够支持...

    Django book pdf 完整版

    - **第16章:与遗留数据库和应用程序集成** - 探讨了如何将Django与现有系统集成。 - **第17章:扩展Django的管理界面** - 指导如何根据特定需求定制管理面板。 - **第18章:国际化** - 介绍了如何使应用程序支持多...

    python django建站教程

    方便自己也方便大家,敬请积极参与翻译! 第一章:介紹Django 第二章 入门 第三章 视图和URL配置 ... 第十七章: 中间件 第十八章: 集成已有的数据库和应用 第十九章: 国际化 第二十章: 安全

    The-Django-Book中文版

    第一章:介紹Django 阅读 01 第二章 入门 阅读 02 第三章 视图和URL配置 阅读 03 ...第十七章: 中间件 阅读 17 第十八章: 集成已有的数据库和应用 阅读 18 第十九章: 国际化 阅读 19 第二十章: 安全 阅读 20

    Django book 2.0 中文版

    17. **第十七章:中间件** - 中间件的作用和应用场景。 - 如何定义和使用自定义中间件。 18. **第十八章:集成已有的数据库和应用** - 迁移现有数据库到 Django 的方法。 - 集成第三方应用和服务的策略。 19. ...

    Django Web框架入门到精通 中文版

    本书所讲的是Django:一个可以使Web开发工作愉快并且高效的Web开发框架。 使用Django,使你能够以最小的代价构建和维护高...第十七章: 中间件 第十八章: 集成已有的数据库和应用 第十九章: 国际化 第二十章: 安全

    Djangobook

    《Djangobook》是一部关于Python Web框架Django的中文文档,它全面地介绍了Django的各种概念、特性和使用方法。虽然这个版本可能较旧,但它仍然具有很高的学习价值,可以帮助初学者和有经验的开发者理解Django的核心...

    中文版django book.pdf"

    #### 第十七章:解读Django的管理界面 - **概述**:进一步介绍了如何自定义Django的管理界面,包括添加新的管理功能和改善用户体验。 - **完成度**:100% #### 第十八章:国际化 - **概述**:介绍了如何使Django...

    django 连接数据库出现1045错误的解决方式

    在使用Django框架进行Web应用开发时,与数据库的交互是至关重要的环节。当你尝试运行`python manage.py migrate`命令来同步数据库模型时,如果遇到`django.db.utils.OperationalError: (1045, "Access denied for ...

    Python.Django视频教程.zip

    django-01-django安装.rar django-02-模板文件的导入.rar django-03-模板变量的使用.rar django-04-运算符-表达式.rar django-05-URL配置.rar Django-06-模板基本使用.rar Django-07-数据库使用-01.rar Django-08-...

    Django book 2.0 的中文翻译

    5. **第十四章 集成的子框架 django.contrib** - 介绍Django的`django.contrib`模块,包括内容管理系统(flatpages)、站点框架(sites)、权限管理(permissions)等。 - 学习如何利用这些子框架为项目添加附加...

    凝思系统+django+达梦数据库

    在构建基于凝思安全系统的应用程序时,选择使用Django作为Web框架并集成达梦数据库是一项技术挑战。这里我们将深入探讨这个组合的相关知识点,包括安装、配置以及开发过程中的关键要点。 1. **凝思安全系统**:凝思...

    Django:Django模型设计与数据库操作.docx

    Django:Django模型设计与数据库操作.docx

    Django_book_2_中文版.pdf

    17. **第十七章:中间件** - Django中间件的原理与使用。 - 如何自定义中间件以实现特殊需求。 18. **第十八章:集成已有的数据库和应用** - 如何将现有的数据库和应用与Django集成。 - 处理遗留系统的方法。 ...

Global site tag (gtag.js) - Google Analytics