Python Django框架连接金仓数据库

Kingbase(金仓数据库)是北京人大金仓信息技术股份有限公司经过多年努力,自主研制开发的具有自主知识产权的通用关系型数据库管理系统,属于国产数据库,在与其他软件的连接上参考资料较少。作者由于实验要求使用此数据库开发,期间遇到很多问题,最后经过老师的一篇文档完成实验。写下此文章以便参考。

一、安装软件

Python 3.6
Django 1.8
KingbaseES 7.0

1.安装python

下载地址: https://www.python.org/downloads/
在此网站下载python 并安装。一定要勾选pip。注意勾选第一个安装界面的下部分加入path的选项。
图片:在这里插入图片描述

2.安装Django

• 在命令提示符下用安装django:
A. 打开命令提示符窗口(win+R,输入cmd)
B. 执行django 安装命令: pip install Django

3.安装psycopg2

使用pip install psycopg2 安装

4.安装kingbase ES 7.0数据库

(1) 安装数据库
(2) 初始化数据库
使用下图所示的“数据库初始化工具”。 完成后,任务管理器的“服务”会发现对应的kingbase_instance。
Alt
具体安装教程参照kingbase相关文件。

二、Django项目开发

1. 使用django管理工具 django-admin.py在想要的文件目录下(如D:\djangoProject)创建一个项目HelloWord

django-admin.py startproject HelloWorld
在这里插入图片描述生成结果如下:
在这里插入图片描述

2.在项目HelloWorld中创建叫TestModel 的app

使用命令 django-admin startapp TestModel

在这里插入图片描述配置TestModel参照:http://www.runoob.com/django/django-tutorial.html

3.5. 在项目配置文件setting.py中配置kingbase数据库(本文重点)

Django中内置了多种数据库,如postgresql、oracle、mysql,如果使用kingbase数据库,需要自己定制数据库后台,详见第三部分:定制数据库后台。
HelloWorld/HelloWorld/settings.py: 文件代码

DATABASES = {
   
    'default': {
   ENGINE: ‘TestModel.backends.kingbase’,     # kingbase
        ‘NAME:HELLO,                          # 数据库名,已创建
        ‘USER:SYSTEM,                         #用户名
        ‘PASSWORD:123456,                    #密码
        ‘HOST:127.0.0.1,                       #服务器所在ip
        ‘PORT:54321,                          #端口号
    }
}

4.同步model到数据库

A .使用python manage.py makemigrations , 通知Django修改Model, TestModel\migrations下生成0001_initial.py
在这里插入图片描述
B. python manage.py sqlmigrate , 查看model对应的SQL语句
在这里插入图片描述

C . python manage.py migrate , 执行SQL语句到数据库
在这里插入图片描述

注意:如果使用命令行语句不能自动执行,则需要在python平台手动执行,对于第三步则需要将生成的0001_initial中SQL语句复制到数据库中执行。
在这里插入图片描述

查看kingbase中HELLO数据库,发现自动生成数据库表。
在这里插入图片描述7 在view中使用model,渲染相应的模板(html)
8 在url中创建请求和响应(view)的映射
9 将在模板(html)中使用Form表单简化html控件
7.8.9同网上参考教程.

三、定制后台数据库

由于kingbase的底层是postgresql,使用psycog2能够连接kingbase,因此我们继承已有的postgresql数据库后台,修改kingbase特有的部分。

A. 在TestModel目录下创建backends\kingbase文件夹,在kingbase文件夹下创建3个文件: init.py,base.pyintrospection.py
B. init.py 内容为空,告诉python这是python文件而已。
C. base.py 中代码如下:

from django.db.backends.postgresql import base     # 从postgresql中导入base
from .introspection import DatabaseIntrospection   #从introspection.py导入DatabaseIntrospection类
class DatabaseWrapper(base.DatabaseWrapper):    #继承postgresql的DatabaseWrapper
data_types = {
   
        'AutoField': 'int identity(1,1)',     #设置 Model Field和kingbase数据类型的转换 
        'BigAutoField': 'bigserial',
        'BinaryField': 'bytea',
        'BooleanField': 'boolean',
        'CharField': 'varchar(%(max_length)s)',
        'CommaSeparatedIntegerField': 'varchar(%(max_length)s)',
        'DateField': 'date',
        'DateTimeField': 'timestamp with time zone',
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值