django连接oracle时setting 配置方法

下一步是将新创建的应用程序与项目相关联。为此,您需要编辑 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 配置方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Python的Django框架中settings文件的部署建议

    django在一个项目的目录结构划分方面缺乏必要的规范,因此不同人的项目组织形式也千奇百怪,而且也很难说谁的做法就比较好.我根据自己的项目组织习惯,发布了一个项目dj-scaffold. 前些天在reddit上为我的项目dj-scaffold打了个"广告"(见:http://redd.it/kw5d4).不想评价甚糟,甚至差点被打成负分.其中更也人将这个项目说的一文不值.面对负面声音虽然会有些不爽,但其中的建设性意见还是需要听取的,至于那些纯属个人偏好部分就自动过滤了. 在谈及sett

  • django中的setting最佳配置小结

    Django settings详解 1.基础 DJANGO_SETTING_MODULE环境变量:让settings模块被包含到python可以找到的目录下,开发情况下不需要,我们通常会在当前文件夹运行,python可以搜索到.如果需要运行在其他服务器上,就必须指定DJANGO_SETTINGS_MODULE变量. 2.默认设定 一个django的settings文件不需要我们手动去设置所有项目,因为系统已经默认设置好了.我们只需要修改我们使用的设 定就好了.默认的设置在django/conf/

  • Django框架的中的setting.py文件说明详解

    1.加载数据库,数据库的配置不能写死在seting.py文件中,下面的方式是读取另外一个文件,配置数据库: config = '' with open(os.path.join(BASE_DIR, 'config/config.json'), 'rt') as f: config = json.load(f) DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'szrqgl', 'USER': con

  • django连接oracle时setting 配置方法

    下一步是将新创建的应用程序与项目相关联.为此,您需要编辑 myproj 文件夹中的 settings.py 文件,将字符串"myproj.myapp"追加到 INSTALLED_APPS 字节组中,如下所示: INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'myproj.myapp' )

  • Python连接Oracle之环境配置、实例代码及报错解决方法详解

    Oracle Client 安装 1.环境 日期:2019年8月1日 公司已经安装好Oracle服务端 Windows版本:Windows10专业版 系统类型:64位操作系统,基于x64的处理器 Python版本:Python 3.6.4 :: Anaconda, Inc. 2.下载网址 https://www.oracle.com/database/technologies/instant-client/downloads.html 3.解压至目录 解压后(这里放D盘) 4.配置环境变量 控制

  • PHP远程连接oracle数据库操作实现方法图文详解

    本文实例讲述了PHP远程连接oracle数据库操作实现方法.分享给大家供大家参考,具体如下: 一.以下是基于 wampServer 的php 访问oracle数据库的操作步骤: 1.第一步:让PHP支持OCI 首先,安装PHP的集成运行环境,网上有很多集成,我安装的是WampServer的(具体的安装方法也可以参考之前写的另一篇文章),安装好后,从安装目录中找到php.ini文件,比如我本地的路径是D:\wamp\bin\php\php5.3.3,将php.ini中的php_oci8.dll的;

  • 解决Navicat Premium 12连接Oracle时提示oracle library is not loaded的问题

    笔者使用的Navicat Premium 12启动界面截屏: 请注意是64位的.笔者win7 64位系统. 连接Oracle时提示"oracle library is not loaded". 解决方法: 1.前往"http://www.oracle.com/technetwork/database/database-technologies/instant-client/downloads/index.html" 2.选择与自己系统匹配的"Instant

  • Python连接Redis的基本配置方法

    在Linux系统下Python连接Redis的基本配置方法具体操作步骤 系统环境: OS:Oracle Linux Enterprise 5.6 Redis:redis-2.6.8 Python:Python-2.7.3 redis的python包版本:redis-2.7.2.tar 前提条件: 1.确保Redis已成功安装并且正确配置,参考文档 主从配置文档: //www.jb51.net/article/147397.htm 2.确保Python环境已成功配置,参考文档 https://ww

  • Windows Sever 2012下Oracle 12c安装配置方法图文教程

    分享Oracle 12c安装配置方法图文教程,具体内容如下 1.我们开启虚拟机 2.Windows Sever 2012启动中. 3.看到Windows Sever 2012的桌面. 4.我们解压缩两个文件,winx64_12c_database_1of2.zip,winx64_12c_database_2of2.zip.也就是oracle的安装文件. 5.这个时候我们可以看到服务器启动以后的仪表板. 6.然后我们合并两个解压缩以后文件夹的内容,进行合并.可以查看大小2G多. 7.我们可以看到合

  • Plsql Developer连接Oracle时出现Could not initialize oci.dll解决方案

    用plsql developer连接远程Oracle时会出现Could not initalize oci.dll警告,原因分析:安装完后Oracle的 oci.dll 是64位的,而32位应用程序 PLSQL Developer 无法加载,或者相反.因为之前实习遇到这个问题,我没有做好记录,最近又有同事遇到,问我,然后我就要重新搜索解决这个问题,所以现在就写成博客,做好记录. 步骤: 1.去http://www.oracle.com/technetwork/database/features/

  • 详解Spring Hibernate连接oracle数据库的配置

    详解Spring Hibernate连接oracle数据库的配置 jdbc.properties文件配置如下  driverClassName=oracle.jdbc.driver.OracleDriver url=jdbc\:oracle\:thin\:@localhost\:1521\: database=OA username=oa password=oa initialSize=2 maxActive=10 maxIdle=2 minIdle=2 removeAbandoned=true

  • Oracle 11g 安装配置方法图文教程

    本教程为大家分享了Oracle 11g 安装配置方法图文教程,供大家参考,具体内容如下 环境:Windows 7  64位 背景:自己的电脑上很久没有下载过数据库了,4年前装过一次,后来重新做了很多次系统,导致很多软件都要重新装,今天 公司电脑重新搭建了下开发环境,回到家再来总结下. 总归没坏处,嘿嘿 好了,废话就唠叨到这了,下面具体介绍下,方便以后的小伙伴. 建议大家在安装期间把360关闭,不然很多问题都会出来. 1)首先到这个地址: http://www.oracle.com/technet

  • thinkphp中连接oracle时封装方法无法用的解决办法

    最近收集了一些关于THinkPHP连接Oracle数据库的问题,有很多朋友按照连接mysql的方法来操作,导致有一些方法在Oreale中无法正常使用.比如说:findAll,Select方法无法使用,获取不到需要的数据.Create和add方法无法创建和写入数据到数据库中. 其实根据以前问题我做了几天调试,找到了问题所在,并成功在我自己一个小项目练习中使用正常,那么现在就将我的经验分享给大家. 1,数据库的连接及配置文件的内容我就不说了, 上面已经做了解释.我这里只根据一个数据表的例子来说明我的

随机推荐