暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Django配置GBase 8s

wj2021 2022-01-24
534

一、简介:

      Django 是一个由 Python 编写的一个开放源代码的 Web 应用框架。使用 Django,只要很少的代码,Python 的程序开发人员就可以轻松地完成一个正式网站所需要的大部分内容,并进一步开发出全功能的 Web 服务 Django 本身基于 MVC 模型,即 Model(模型)+ View(视图)+ Controller(控制器)设计模式,MVC 模式使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。

二、系统要求:

1,操作系统使用CentOS 7.8
2,unixODBC已经安装
3,GBase 8s CSDK 64bit(客户端连接工具)已经安装
4,Python版本是3.7.8(系统自带)
5,Django版本使用2.1
6,需要pyodbc
7,使用django-gbasedbtdb 1.7.0版本
8,使用PyCharm Community Edition开发测试

三、安装配置步骤

1、GBase 8s CSDK安装

GBase 8s CSDK已经安装,并且根据实际情况配置。
环境变量根据GBase 8s数据库的实际情况配置:主要的参数包括DB_LOCALE、CLIENT_LOCALE、GBASEDBTDIR、GBASEDBTSERVER、GL_USEGLU(如果数据库配置了,需要配置)、GBASEDBTSQLHOSTS、LD_LIBRARY_PATH。如:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

export GBASEDBTDIR=/opt/gbase

export GBASEDBTSERVER=gbase01

export ONCONFIG=onconfig.${GBASEDBTSERVER}

export PATH=${GBASEDBTDIR}/bin:${PATH}

export LD_LIBRARY_PATH=$GBASEDBTDIR/lib:$GBASEDBTDIR/lib/cli:$GBASEDBTDIR/lib/esql:$LD_LIBRARY_PATH

export GBASEDBTDIR=$GBASEDBTDIR/etc/sqlhosts

 

export DB_LOCALE=zh_CN.utf8

export CLIENT_LOCALE=zh_CN.utf8

export GL_USEGLU=1

export DBDATE="Y4MD-"

export GL_DATE="%iY-%m-%d"

export GL_DATETIME="%iY-%m-%d %H:%M:%S"

export DBACCESS_SHOW_TIME=1

 

在$GBASEDBTSQLHOSTS中配置相应的数据库服务连接,如:

1

gbase01 onsoctcp 192.168.80.101 9088

 

2、unixODBC配置

确认unixODBC及unixODBC-devel均已经安装,根据数据库配置odbc.ini

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

[ODBC Data Sources]

utf8=GBase ODBC DRIVER

;

; Define ODBC Database Driver's Below - Driver Configuration Section

;

 

[utf8]

Driver=/opt/gbase/lib/cli/iclit09b.so

Description=GBase ODBC DRIVER

Database=utf8

LogonID=gbasedbt

pwd=GBase123

Servername=gbase01

CursorBehavior=0

CLIENT_LOCALE=zh_CN.utf8

DB_LOCALE=zh_CN.utf8

TRANSLATIONDLL=/opt/gbase/lib/esql/igo4a304.so

 

;

; UNICODE connection Section

;

[ODBC]

;uncomment the below line for UNICODE connection

;UNICODE=UCS-4

;

; Trace file Section

;

Trace=0

TraceFile=/tmp/odbctrace.out

InstallDir=/opt/gbase

TRACEDLL=idmrs09a.so

 

 

 

 

并将ODBCINI加入到环境变量中去

1

export ODBCINI=$HOME/odbc.ini

 

3、Python安装

通过yum安装python3及python3-devel

1

yum install python3 python3-devel

 

Linux下安装完pip3之后,利用pip安装第三方库是默认是从国外下载包的。可以把镜像源设置成国内的,这样安装第三方库时可以获得更快的下载速度。
设置方法如下:
1)、在用户 目录下面,新建一个.pip文件夹
2)、在.pip文件夹下新建pip.conf文件
pip.conf文件的内容如下:

1

2

[global]

index-url = https://pypi.tuna.tsinghua.edu.cn/simple

 

这里设置成了清华的镜像源,也可以设置成其他的,比如
"https://mirrors.aliyun.com/pypi/simple"

"http://pypi.douban.com/simple"

4、Django 2.1安装

直接使用pip3安装Django,命令如下:

1

pip3 install Django==2.1

 

显示Django的版本

1

pip3 list

 

5、安装pyodbc

pyodbc安装需要gcc,gcc-devel,gcc-c++,python3-devel
直接使用pip安装pyodbc,命令如下:

1

pip3 install pyodbc

 

将自动安装最新的版本,需要的pyodbc版本需高于4.0.21

6、安装django-gbasedbtdb 1.7.0

Django-gbasedbtdb 1.7.0由Django-informixdb 1.7.0修改而来,适用于Django 2.1版本
Django-gbasedbtdb 1.7.0下载地址:https://gbasedbt.com/dl/django-gbasedbtdb
下载后解压至django-gbasedbtdb-1.7.0目录下
在django-gbasedbtdb-1.7.0h目录下,执行安装

1

python3 setup.py build install

 

安装过程中会检查依赖包并且安装。
安装完成后,显示django-gbasedbtdb的版本

1

2

3

4

5

6

7

[gbasedbt@gbasehost01 ~]$ pip3 list

Django (2.1)

django-gbasedbtdb (1.7.0)

pip (9.0.3)

pyodbc (4.0.30)

pytz (2020.1)

setuptools (39.2.0)

 

7、安装PyCharm

PyCharm需要java 1.8的支持,故系统需要安装openjdk 1.8
解压pycharm-community-2020.2.1.tar.gz生成pycharm-community-2020.2.1目录,在用户的环境变量中增加PYCHARM_HOME=$HOME/pycharm-community-2020.2.1,及PATH=$PYCHARM_HOME/bin:$PATH

1

2

export PYCHARM_HOME=$HOME/pycharm-community-2020.2.1

export PATH=$PYCHARM_HOME/bin:$PATH

 

四、项目连接数据库

在Projects目录下,执行

1

django-admin startproject proj01

命令,创建一个新的proj01项目
开启PyCharm,打开项目$HOME/Projects/proj01




编辑settings.pys文件,在DATABASES中,使用以下内容替换掉default


同时,可选修改以下内容


 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

'default': {

    'ENGINE': 'django_gbasedbtdb',       # 引擎使用django_gbasedbtdb

    'NAME': 'utf8',                      # 连接名

    'SERVER': 'gbase01',                 # GBASEDBTSERVER

    'USER': 'gbasedbt',

    'PASSWORD': 'GBase123',

    'OPTIONS': {

        'DRIVER': '/opt/gbase/lib/cli/iclit09b.so',  # Linux, iclit09b.so

        'CPTIMEOUT': 120,

        'CONN_TIMEOUT': 120,

        'ISOLATION_LEVEL': 'READ_UNCOMMITTED',

        'LOCK_MODE_WAIT': 10,

        'VALIDATE_CONNECTION': True,

    },

    'CONNECTION_RETRY': {

        'MAX_ATTEMPTS': 10,

    },

    'TEST': {

        'NAME': 'utf8',

        'CREATE_DB': False

    }

}

 

 

 

1

同时,可选修改以下内容

 

 

1

2

3

4

5

ALLOWED_HOSTS = ['*']

 

LANGUAGE_CODE = 'zh-Hans'

 

TIME_ZONE = 'Asia/Shanghai'

 

1、在PyCharm的终端中运行

1

python3 manage.py startapp app01

 

创建应用app01,生成app01文件夹及其中的一些文件


 

在settings.pys文件中的INSTALLED_APPS中增加'app01',

1

2

3

4

5

6

7

8

9

INSTALLED_APPS = [

    'django.contrib.admin',

    'django.contrib.auth',

    'django.contrib.contenttypes',

    'django.contrib.sessions',

    'django.contrib.messages',

    'django.contrib.staticfiles',

    'app01',    # 增加这项

]

 

在app01/models.py中增加以下内容

1

2

3

4

5

class Book(models.Model):

    id = models.AutoField(primary_key=True)         # id 会自动创建,可以手动写入

    title = models.CharField(max_length=32)         # 书籍名称

    price = models.DecimalField(max_digits=5, decimal_places=2)  # 书籍价格

    publish = models.CharField(max_length=32)       # 出版社名称

 

改变模型后执行makemigrations命令可以令Django生成数据库迁移文件,用于记录数据库变更历史,这里生成了app01/migrations/0001_initial.py。
执行migrate命令来创建数据库表:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

[gbasedbt@gbasehost01 proj01]$ python3 manage.py migrate

Operations to perform:

  Apply all migrations: admin, auth, contenttypes, sessions

Running migrations:

  Applying contenttypes.0001_initial... OK

  Applying auth.0001_initial... OK

  Applying admin.0001_initial... OK

  Applying admin.0002_logentry_remove_auto_add... OK

  Applying admin.0003_logentry_add_action_flag_choices... OK

  Applying contenttypes.0002_remove_content_type_name... OK

  Applying auth.0002_alter_permission_name_max_length... OK

  Applying auth.0003_alter_user_email_max_length... OK

  Applying auth.0004_alter_user_username_opts... OK

  Applying auth.0005_alter_user_last_login_null... OK

  Applying auth.0006_require_contenttypes_0002... OK

  Applying auth.0007_alter_validators_add_error_messages... OK

  Applying auth.0008_alter_user_username_max_length... OK

  Applying auth.0009_alter_user_last_name_max_length... OK

  Applying sessions.0001_initial... OK

 

1

2

3

4

5

6

7

8

9

10

[gbasedbt@gbasehost01 proj01]$ python3 manage.py makemigrations app01

Migrations for 'app01':

  app01/migrations/0001_initial.py

    - Create model Book

[gbasedbt@gbasehost01 proj01]$ python3 manage.py migrate app01

Operations to perform:

  Apply all migrations: app01

Running migrations:

  Applying app01.0001_initial... OK

[gbasedbt@gbasehost01 proj01]$

记住:改变模型时需要做以下三步:
改变models.py中的模型;
执行python3 manage.py makemigrations来创建数据库迁移文件;
执行python3 manage.py migrate来修改数据库。

 

五、试用Django API

执行以下命令打开Python Shell

1

2

3

4

5

[gbasedbt@gbasehost01 proj01]$ python3 manage.py shell

Python 3.6.8 (default, Apr  2 2020, 13:34:55)

[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux

Type "help", "copyright", "credits" or "license" for more information.

(InteractiveConsole)

 

尝试执行以下API接口操作

1

2

3

4

5

6

7

8

9

>>> from app01.models import Book

>>> Book.objects.all()

<QuerySet []>

>>> book1 = Book(title="GBase 8s", price=100, publish="GBase Publish")

>>> book1.save()

>>> Book.objects.all()

<QuerySet [<Book: Book object (1)>]>

>>> book1.id

1

 

 

 

 

六、Django管理网站简介

Django根据models自动生成管理网站。

1、创建管理员账户

执行以下命令,根据提示输入用户名、密码:

1

2

3

4

5

6

[gbasedbt@gbasehost01 proj01]$ python3 manage.py createsuperuser

用户名 (leave blank to use 'gbasedbt'): webadmin

电子邮件地址: dbt@gbasedbt.com

Password:

Password (again):

Superuser created successfully.

 

2、启动开发服务器

执行python3 manage.py runserver 0.0.0.0:8000命令启动开发服务器,

1

2

3

4

5

6

7

[gbasedbt@gbasehost01 proj01]$ python3 manage.py runserver 0.0.0.0:8000

Performing system checks...

System check identified no issues (0 silenced).

September 14, 2020 - 13:19:29

Django version 2.1, using settings 'proj01.settings'

Starting development server at http://0.0.0.0:8000/

Quit the server with CONTROL-C.

 

使用浏览器访问http://127.0.0.1:8000/admin/ (之前我们开启了ALLOWED_HOSTS = ['*'],允许使用其它IP访问),将看到以下页面:


使用上一步创建的管理员账户登录,即可进入Django管理网站首页。


3、添加app01应用

首页默认是没有app01应用的,必须修改app01/admin.py文件:

1

2

3

4

5

from django.contrib import admin

 

from .models import Book

 

admin.site.register(Book)

 

在浏览器中刷新页面:


点击Books即可对Book表(app01_book表)进行增删改查等操作。


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论