下一步是将新创建的应用程序与项目相关联。为此,您需要编辑 myproj 文件夹中的 settings.py 文件,将字符串“myproj.myapp”追加到 INSTALLED_APPS 字节组中,如下所示:

INSTALLED_APPS = (

‘django.contrib.auth',

‘django.contrib.contenttypes',

‘django.contrib.sessions',

‘django.contrib.sites',

‘myproj.myapp'

)

您已完成了应用程序主干的构建。然而,在可以查看应用程序是否正常工作之前,需要执行一些额外步骤。当然,这些步骤可能会有所不同,具体取决于您希望应用程序执行的操作。例如,如果您要构建不与数据库交互的简单应用程序,则不需要将数据库信息放在 settings.py 配置文件以及设计数据模型中。但在大多数情况下,您至少需要执行以下五个步骤:

在 settings.py 中指定数据库信息

创建模型

创建模板

创建视图

在 urls.py 中配置 URL 模式

在继续上述步骤之前,让我们看一下 Django 应用程序的高级视图,以便您可以更好地了解 Django 中的组件如何工作。下图示意性地显示了 Django 应用程序如何工作以满足用户请求。

根据此图中的图示,工作方式如下:

用户输入支持 Django 的站点的 URL 或在此站点的已加载页面上执行操作,从而将请求发送到托管此站点的 Web 服务器。

Django 的 URL 调度程序遍历 urls.py 文件中的 URL 模式,并选择第一个与用户请求的 URL 匹配的模式,然后调用与所发现模式相关联的视图(Python 回调函数)。

视图使用数据模型获得数据库数据,然后加载指定模板(已嵌入特殊模板标记的 HTML 页面;它类似于 Java 中的 JavaServer Page),并向其传递上下文(包括映射到模板变量名称的已获得数据)。

最后,视图返回由已呈现模板填充的 HttpResponse 对象,如果出现错误,则返回 HTTP 异常。

您可以看到,Django 基于将 Web 应用程序逻辑分为模型、视图和模板的概念,因此有效地将业务逻辑和展示分离开来。通常,这类似于当今许多其他 Web 框架中使用的模型-视图-控制器 (MVC) 范例。然而,在 Django 中,视图更像控制器,介于模型和模板之间。而 Django 模板更接近于 MVC 视图,因为这些模板负责使用从模型中获得的数据生成适当的用户界面。

现在您已掌握 Django 的概念,让我们继续在本部分开头启动的项目,构建一个与 Oracle 数据库交互的简单应用程序。

配置 Django 以便与 Oracle 数据库交互

您必须先告诉 Django 如何连接到数据库,才能利用 Django 的数据库相关特性。您可以通过在项目的 settings.py 配置文件中配置数据库相关设置来执行此操作。对于在上一部分开头创建的项目,您需要编辑 django-admin.py 生成的 myproj 目录中的 settings.py。

在文本编辑器中打开 settings.py 文件,并根据您的数据库编辑与数据库相关的设置。例如,您可能按如下方式编辑它们:

DATABASE_ENGINE = ‘oracle'

DATABASE_NAME = ‘XE'

DATABASE_USER = ‘hr'

DATABASE_PASSWORD = ‘hr'

DATABASE_HOST = ‘localhost'

DATABASE_PORT = ‘1521'

上述方式假设您在数据库中安装了 HR 演示模式并解除了锁定。然而,在实际项目中,您很可能会使用针对特定应用程序设计的自定义模式。需要注意的是,Django 可以省去您自己创建基础表的麻烦。完成数据模型的构建之后,您可以运行 manage.py syncdb 命令以自动创建数据库表 — 针对 models.py 文件中的每个数据模型创建一个数据库表。但为了简单起见,本文中的示例将使用 HR 演示模式中已经存在的表。

现在您已指示 Django 与特定 Oracle 数据库交互,可以继续构建数据模型。

与模型的对象关系映射

如前所述,Django 支持与模型的对象关系映射,其中每个模型映射到单个数据库表,并表示子类为 django.db.models.Model 标准类的 Python 类。

以下示例说明如何针对现有表定义模型。在此示例中,您将使用 HR 的 employees 表,仅针对此表的选定字段定义模型字段。在 myproj/myapp 目录中打开 models.py 文件并进行编辑,添加 employees 类,如下所示:

from django.db import models

Create your models here.

class employees(models.Model):

employee_id = models.IntegerField(primary_key=True)

first_name = models.CharField(max_length=20, null = True)

last_name = models.CharField(max_length=25)

email = models.CharField(max_length=25)

class Meta:

db_table = “employees”

请注意,此处使用了一些模型字段选项。通过设置 primary_key = True,可显式指定此字段是模型的主键。max_length 是 CharField 这一字符串字段所需的参数。如果将可选的 null 参数设置为 True,即表示告诉 Django 将空值作为 NULL 保存到数据库中。默认情况下,此参数设置为 False。要查看字段选项和字段类型的完整列表,您可以参阅 Django 文档中的 Model 字段参考页面。

在上述示例中,另一个需要注意的事项是类 Meta 的使用,您可以通过此类为模型提供元数据选项。在此特定示例中,您使用 db_table 选项显式指定模型要映射到的表的名称。实际上,默认情况下,Django 假设表的名称由模型类的名称和应用程序名称组成(通过下划线 (_) 符号分隔)。因此,在此特定示例中,Django 将查找名为 myapp_employees 的表。当然,db_table 并不是您可用于模型内部类 Meta 的唯一选项。您可以在 Django 文档的 Model Meta 选项页面上查看可用的 Meta 选项列表。

此处讨论的示例很简单,因为它仅显示到单个数据库表的映射。但实际上,您通常必须处理一组通过外键约束相互关联的基础数据库表。为了解决此问题,Django 提供了 ForeignKey 字段类型,可让您定义表示多对一关系的模型字段。

幸运的是,HR 演示模式仅包含一组通过外键约束相互关联的表。例如,您可能选择 departments 表(其 manager_id 字段是 employees 表中 employee_id 的外键),并定义以下模型(将其添加到 models.py 文件中):

class departments(models.Model):

department_id = models.IntegerField(primary_key=True)

department_name = models.CharField(max_length=30)

manager = models.ForeignKey(employees, null = True)

class Meta:

db_table = “departments”

看一下上述模型定义,您可能已经注意到,它针对外键模型字段使用名称 manager,而不是实际在 departments 表中使用的 manager_id。实际上,在模型中使用的 manager 字段引用相应的 employees 对象,而非此对象的 employee_id 字段。当外键字段名称要引用基础表中的相应列时,Django 会隐式地将 _id 追加到此名称中。然而,在某些情况下,表中外键字段的名称结尾可能不包含 _id。如果是这种情况,您可以使用外键模型字段的 db_column 参数显式指定表列名称。虽然在此特定示例中无需如此,但您可以使用以下语法在 departments 表中显式指定外键列的名称:

manager = models.ForeignKey(employees, db_column = ‘manager_id', null = True)

除了上述通过 ForeignKey 定义的多对一关系之外,Django 还支持一对一和多对多关系,您可以在模型中分别通过 OneToOneField 和 ManyToManyField 字段来定义。

以上这篇django连接oracle时setting 配置方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

django oracle数据库配置,django连接oracle时setting 配置方法相关推荐

  1. 没有oracle客户端可以连接数据库,Oracle数据库之SqlDbx连接oracle(无需安装Oracle客户端)...

    本文主要向大家介绍了Oracle数据库之SqlDbx连接oracle(无需安装Oracle客户端),通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. 标签:acl   str    ...

  2. python oracle数据库开发_python连接Oracle数据库

    # python连接oracle数据 ## 介绍 ----------------------------- - python 连接oracle数据库,可以使用cx_oracle模块 - 使用如下命令 ...

  3. asp.net连oracle数据库,ASP.NET连接Oracle数据库的步骤详解(转)

    在用ASP.NET开发应用程序时,我们会用到数据库.ASP.NET与Oracle的连接也是比较常用的.本文主要介绍了ASP.NET连接Oracle数据库的方法和步骤.ASP.NET连接Oracle数据 ...

  4. r 连oracle数据库,R语言—连接Oracle数据库

    R语言-连接Oracle数据库 本教程会讲解两种方法,第一种方法较为简单,且中文不容易出现乱码.第二种方法,较为复杂,和java的jdbc连接数据库操作类似. 操作环境: 系统:windows10 6 ...

  5. 用什么方式链接oracle数据库,使用cx_Oracle 连接oracle数据库的几种方式

    连接oracle数据库的几种方式: 语法: cx_Oracle.connect('username','pwd','IP/HOSTNAME:PORT/TNSNAME') import cx_Oracl ...

  6. java对Oracle数据库查询_java 连接Oracle数据库 查询

    java 连接Oracle数据库 查询 (2014-03-03 16:07:15) 标签: it 在ADF要先引入jar包 Oracle JDBC ;不然加载驱动不会成功. public static ...

  7. oracle数据库实践,RubyonRails连接Oracle数据库实践

    今天学习了一下最近流行的Ruby on Rails,感觉:就是一个代码生成器 链接Oracle数据库的时候,查了半天的资料.终于找到办法了,^______^ 1.安装驱动 下载并运行(双击)ruby- ...

  8. python读取oracle数据库性能_python 连接oracle数据库,报错解决,pandas读取。

    背景:工作需要,windows环境下要用python连接oracle,用pandas处理数据. 目标:连接oracle,并读取为DataFrame格式. 连接oracle是个大坑,尝试了很久终于整好了 ...

  9. python oracle数据库操作_Python连接oracle数据库的基本操作

    1 #导入cx_Oracle模块 2 importcx_Oracle as cx3 ​4 #连接数据库 5 db = cx.connect('username/password@host/orcl') ...

最新文章

  1. eventbus框架
  2. 机器学习系列-随机过程
  3. 函数(一.return)
  4. 训练好的神经网络 如何预测_显存不够,如何训练大型神经网络?
  5. Typescript04---模块、命名空间
  6. matlab泛函分析,Matlab数字图像处理的学习建议 – MATLAB中文论坛
  7. c++类详解:访问权限,构造函数,拷贝构造函数,析构函数
  8. 微信怎么找群聊?找回微信群聊只需要这样…
  9. SPDK/NVMe存储技术分析之用户态ibv_post_send()源码分析(一)
  10. Vue.js与Node.js一起打造一款属于自己的音乐App(收藏)
  11. AD603+MCP4725+STM32-----自动增益控制电路
  12. 前嗅教你大数据:批量采集/下载网页中的图片数据
  13. C# vb .net实现消除红眼效果
  14. AIGC能否助力三六零实现“戴维斯双击”?
  15. 2022年蓝桥杯C++B组题解 - 很详细
  16. DPlayer播放m3u8
  17. Android进阶之路 - StringUtils、NumberUtils 场景源码
  18. 学生使用计算机注意事项有哪些,购买笔记本有哪些注意事项?学生购买笔记本八项注意...
  19. Real-Time Rendering 4th Edition 实时渲染第四版 第三章 图形处理单元(The Graphics Processing Unit)
  20. Python数据分析从入门到精通视频教程

热门文章

  1. Java学习之注解Annotation实现原理
  2. OSG的HUD抬头文字显示
  3. centOS上docker 的简单使用
  4. 帕金森患者的新曙光!AI无线智能探测系统诞生
  5. spring+kafka消费者的2种配置方式
  6. MonoBehaviour生命周期
  7. 这种口令解决方案可替代多因子验证
  8. 减少科研文章写作错误的一点小技巧
  9. 《你的灯亮着么》五六篇
  10. 使用交换机的dhcp snooping拒绝非法dhcp服务