3. 使用说明

  • 连接数据库

  • 完整的DSN和Easy Connet

  • 线程选项

  • 命名问题

  • NULL和空字符串

  • TextField限制

3.1. 连接数据库

打开settings.py文件,然后修改DATABASE下的default键值进行修改即可。

DATABASES = {'default': {'ENGINE': 'django.db.backends.kingbase','NAME': 'TEST','USER': 'SYSTEM','PASSWORD': '123456','HOST': '127.0.0.1','PORT': '54321',}
}

Django不会自动创建数据库,因此需要手动创建数据库,即在数据库命令行交互模式执行以下命令:

CREATE DATABASE TEST;

3.2. 完整的DSN和Easy Connet

如果 HOST 和 PORT 都为空,则可以在 NAME 中使用一个完整的 DSN 或者 Easy Connet 。例如,在使用没有 tnsnames.ora 的 RAC 或可插入数据库时,需要使用这种格式。

Easy Connet 字符串示例:

'NAME': 'localhost:1521/kdb1',

完整的 DSN 字符串示例:

'NAME':('(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))''(CONNECT_DATA=(SERVICE_NAME=kdb1))'
),

3.3. 线程选项

如果你准备在一个多线程环境中运行 Django (例如,在任何现有操作系统上使用默认MPM模块的 Apache),name必须将 KingbaseES 数据库设置的 threaded 选项设置为 True:

'OPTIONS':{'threaded':True,
},

3.4. 命名问题

Kingbase 规定名称长度限制为30个字符。为了适应这一限制,后端将截断数据库标识符,用可重复的MD5散列值替换截断后的名称的最后四个字符。 此外,后端将数据库标识符转换为全大写。

为了防止这些转换(通常只在处理遗留数据库或访问属于其他用户的表时),使用一个带引号的名称作为 db_table 的值:

class LegacyModle(models.Model):class Meta:da_table = '"name_left_in_lowercase"'class ForeignModel(modles.Model):class Meta:da_table = '"OTHER_USER"."NAME_ONLY_SEEMS_OVER_30"'

当运行migrate时,如果某些KingbaseES关键字被用作model字段的名称或 db_column 选项的值,可能会发生错误。Django 引用查询中使用的所有标识符, 来防止大多数此类问题,但当使用KingbaseES数据类型作为列名时,仍然可能发生错误。特别要避免使用日期、时间戳、数字或浮点数作为字段名。

3.5. NULL和空字符串

Django 通常使用空字符串(' ')而不是NULL,但是KingbaseES 对两者的处理是相同的。为了解决这个问题,KingbaseES 服务端会忽略有空字符串作为可能值的字段上的显式null选项,并生成DDL,就像 null=True 一样。当从数据库中取值时,会假设这些字段之一中的NULL值确实表示空字符串,并且数据被静默转换以反映此假设。

3.6. TextField限制

KingbaseES 服务端将 TextFields 存储为 NCLOB 列,并且通常对此类 LOB 列的使用附加了一些限制:

  • LOB 列不能用作主键。

  • LOB 列不能再索引中使用。

  • LOB 列不能再列表中使用。这意味着在Kingbase上运行时,尝试在包含 TextField 列的模型上使用 QuerySet.distinct 方法将导致发生错误。一种解决办法是,将 QuerySet.defer 方法与 distinct() 结合使用,以防止 TextField 列包含在 SELECT DISTINCT 列表中。

金仓数据库KingbaseES客户端编程开发框架-Django(3. 使用说明)相关推荐

  1. 金仓数据库KingbaseES客户端编程开发框架-Django(2. 概述)

    2. 概述 框架说明 支持情况 配置说明 2.1. 框架说明 Django是一个高水准的Python编程语言驱动的开源模型,是视图.控制器风格的Web应用程序框架,它起源于开源社区.使用这种架构,程序 ...

  2. 金仓数据库KingbaseES客户端编程开发框架-Efcore(3. Kdbndp.EntityFrameworkCore.KingbaseES在.net core中使用 windows)

    3. Kdbndp.EntityFrameworkCore.KingbaseES在.net core中使用(windows) 本部分介绍了在Windows环境下,Kdbndp.EntityFramew ...

  3. 金仓数据库KingbaseES客户端编程接口指南-ODBC(6. KingbaseES ODBC 的扩展属性)

    6. KingbaseES ODBC 的扩展属性 KingbaseES ODBC 数据源的高级选项 Linux环境下SQLDriverConnect()连接串中KingbaseES ODBC的扩展连接 ...

  4. 金仓数据库KingbaseES客户端编程接口指南-DCI(3. DCI 工程配置)

    3. DCI 工程配置¶ Windows 平台工程搭建(vs2008) Linux平台工程搭建 服务的配置方法与参数说明 多主机地址配置 3.1. Windows 平台工程搭建(VS2008) 3.2 ...

  5. 金仓数据库 KingbaseES 客户端编程接口指南 - JDBC(11. JDBC 示例说明)

    11. JDBC 示例说明 在所提供的用例中,使用的数据库信息为,用户名:system; 密码:manager; 数据库名:test; 端口号:54321 数据源示例 连接池示例 Statement ...

  6. 金仓数据库 KingbaseES 客户端编程接口指南 - ODBC 驱动使用

    7. KingabseES ODBC 驱动使用 Windows 中 ODBC 驱动使用步骤(VS2013) Linux 下调用 ODBC 驱动步骤 7.1. Windows 中 ODBC 驱动使用步骤 ...

  7. 金仓数据库 KingbaseES 客户端登录方式

    一.文件位置 默认位置 查看参数 hba_file 修改文件位置 Step 1: ksql中修改参数 Step 2: hba_conf文件移动到之前设定的位置 mv sys_hba.conf /hom ...

  8. 金仓数据库 KingbaseES 异构数据库移植指南 (4. 应用迁移流程)

    4. 应用迁移流程 本文档描述了一套完整的数据库系统评估与迁移方案,目的是帮助客户更明确的了解数据库系统迁移至KingbaseES的流程.方法.关键节点及注意事项,依据数据库系统迁移全过程方法论及各关 ...

  9. 解决金仓数据库KingbaseES创建serial列并将其设置为主键约束,同时copy两条及以上数据时报错的问题

    ​  关键字 人大金仓.金仓数据库.KingbaseES.KES.serial.copy.PRIMARY KEY 问题描述 使用KingbaseES V8R3数据库的客户端工具ksql执行copy - ...

最新文章

  1. CentOS下安装ZooKeeper
  2. 定义一个Employee类
  3. 【文本信息抽取与结构化】详聊如何用BERT实现关系抽取
  4. yolov4论文_YOLOv4论文详细解读
  5. linux下jboss分析helloword,JBoss 中运行servlet 的helloworld程序(转)
  6. 跟我一起玩Win32开发(20):浏览文件夹
  7. js 获取视频,者音频时长
  8. 搜狗拼音输入法linux 18.04,解决Ubuntu 18.04中文输入法的问题,Ubuntu 18.04安装搜狗拼音...
  9. 频率计的交流耦合和直流耦合的区别_直流电源与交流电源是什么?直流与交流之间的区别公司新闻...
  10. lxc设置网络为公网IP
  11. Eigen教程(10)之混淆
  12. 《MLB棒球创造营》:走近棒球运动·洛杉矶道奇队
  13. 依据Right-BICEP要求的对四则运算2的测试
  14. 导入Spring源码找不到包spring-cglib-repack和spring-objenesis-repack
  15. MATLAB求复杂函数积分
  16. 国外部分音乐人工智能/音乐科技研究机构科研项目简介
  17. [小说]魔王冢(2)意乱情迷
  18. 中国气象历史数据china1942_2022降水、温度、气压、风速、风向、云量,逐小时部分为逐三小时
  19. win8 LIC1416N 许可证不能自动添加至节点锁定文件返回码是100.
  20. 人际交往中保护自己的30条小技巧!

热门文章

  1. 安卓手机odex化与刷机包制作
  2. JS基础-Java Class类以及获取Class实例的三种方式
  3. graphviz 学习
  4. JAVA栈应用之括号匹配
  5. git拉取远程分支到本地分支
  6. python调用js接口_最全总结!聊聊 Python 调用 JS 的几种方式
  7. php ld preload,利用环境变量LD_PRELOAD来绕过php disable_function执行系统命令
  8. xvfb的安装、配置、运行(Linux)
  9. Self-Supervised Visual Feature Learning With Deep Neural Networks: A Survey
  10. 羊了个羊爆火,背后有什么样的营销套路?