4.1 简介及安装
Django 是基于 Python 的 Web 应用程序框架,django_dmPython 是 DM 提供的 Django 连接 DM 数据库的驱动,两者的版本对应关系如下:
django_dmPython 版本 | Django 版本 |
---|---|
django_dmPython2.x.x | Django1.9、Django1.10、Django1.11、Django2.0、Django2.1、Django2.2、Django3.0 |
django_dmPython3.x.x | Django3.1、Django3.2、Django4.0、Django4.1 及以上版本 |
django_dmPython 可以运行在任何安装了 python 的平台上,可以使用安装包安装,也可以直接用源码安装。
可以使用如下命令很方便地在 Windows 和 Linux 操作系统下编译并安装 django_dmPython :
//进入到setup.py所在的源码目录,执行以下命令:
python setup.py install
也可以先生成安装文件再进行安装。
在 Windows 操作系统下生成 exe 文件的操作如下,之后只需要直接执行 exe 文件即可安装:
//进入到setup.py所在的源码目录,执行以下命令:
python setup.py bdist_wininst
在 Linux 操作系统下使用 rpm 包安装 dmPython,生成 rpm 包的操作如下所示:
//进入到setup.py所在的源码目录,执行以下命令:
python setup.py bdist_rpm
安装和卸载命令参考如下:
安装:rpm -ivh django_dmPython-1.0-1.noarch.rpm
卸载:rpm -e django_dmPython-1.0-1.noarch.rpm
4.2 举例说明
4.2.1 创建 Django 项目
进入创建项目所在目录,例如 D:\django_dmPython,在该目录下使用如下命令创建 mysite 项目:
django-admin startproject mysite
Django 将会创建一个 mysite 目录,该目录包含 mysite 文件夹与 manage.py 文件。
4.2.2 数据库配置
Django 配置数据库默认为 sqlite3,这是一个小型数据库。要连接 DM 数据库,需修改 settings.py 中的 DATABASES 元组。配置方法如下:
DATABASES = {
'default': {
'ENGINE': 'django_dmPython',
'NAME': 'DAMENG',
'USER': 'SYSDBA',
'PASSWORD': 'Dmsys_123',
'HOST': 'localhost',
'PORT': '5236',
'OPTIONS': {'local_code':1,'connection_timeout':5}
}
}
OPTIONS:是各个驱动都支持的选项,只要在 OPTIONS 中以字典对象的方式配置 dmPython.connect 支持的选项即可,例如:'local_code':1。可以包含多个字典对象,用逗号分隔。dmPython.connect 请参考 3.1.1.1 dmPython.connect
4.2.3 创建 dm 应用
在 Django 中,项目是一个网站使用的配置和应用的集合,一个项目可以包含很多个应用。例如,使用如下命令创建一个 dm 应用:
cd mysite
python manage.py startapp dm
4.2.4 创建模型
编辑 dm\models.py 文件。
from django.db import models
# Create your models here.
class Book(models.Model):
class Meta:
db_table = 'PRODUCT'
PRODUCTID = models.AutoField(primary_key=True, db_column='PRODUCTID')
NAME = models.CharField(max_length=100, null=True)
AUTHOR = models.CharField(max_length=25, null=True)
PUBLISHER = models.CharField(max_length=50, null=True)
PUBLISHTIME = models.DateField(null=True)
PRODUCTNO = models.CharField(max_length=25, null=True)
SATETYSTOCKLEVEL = models.IntegerField(null=True)
ORIGINALPRICE = models.DecimalField(max_digits=5, decimal_places=2, null=True)
NOWPRICE = models.DecimalField(max_digits=10, decimal_places=4, null=True)
DISCOUNT = models.DecimalField(max_digits=2, decimal_places=1, null=True)
DESCRIPTION = models.TextField(null=True)
TYPE = models.CharField(max_length=5, null=True)
PAPERTOTAL = models.IntegerField(null=True)
WORDTOTAL = models.IntegerField(null=True)
SELLSTARTTIME = models.DateField(null=True)
SELLENDTIME = models.DateField( null=True)
同时需要在 settings.py 文件中的 INSTALLED_APPS 中添加设置'dm.apps.DmConfig',将 dm 应用安装到 Django 项目里。
4.2.5 进行数据迁移
在 D:\django_dmPython\mysite 目录下打开命令行工具,执行以下命令,为模型的改变生成迁移文件:
python manage.py makemigrations dm
python manage.py migrate
4.2.6 对数据库进行操作
(1)在 dm 目录中新建一个 services.py 文件,在该文件中实现增、删、改、查四个基本操作。
from .models import Book
#查询操作
def fun_get_books():
books = Book.objects.all() #返回QuerySet
total_rows=books.count()
print('查询到'+str(total_rows)+'条记录')
for book in books:
print(book.NAME, book.AUTHOR, book.PUBLISHER)
print('')
#增加操作
def fun_insert_book():
NewBook = Book()
NewBook.NAME = '水浒传'
NewBook.AUTHOR = '施耐庵,罗贯中'
NewBook.PUBLISHER = '中华书局'
NewBook.PUBLISHTIME = '2005-4-1'
NewBook.PRODUCTNO = '9787101046137'
NewBook.SATETYSTOCKLEVEL = '10'
NewBook.ORIGINALPRICE = '19'
NewBook.NOWPRICE = '14.3'
NewBook.DISCOUNT = '7.5'
NewBook.DESCRIPTION = '''
《水浒传》是宋江起义故事在民间长期流传基础上产生出来的,吸收了民间文学的营养。
《水浒传》是我国人民最喜爱的古典长篇白话小说之一。它产生于明代,是在宋、元以来有关水浒的故事、话本、戏曲的基础上,由作者加工整理、创作而成的。
全书以宋江领导的农民起义为主要题材,艺术地再现了中国古代人民反抗压迫、英勇斗争的悲壮画卷。
作品充分暴露了封建统治阶级的腐朽和残暴,揭露了当时尖锐对立的社会矛盾和“官逼民反”的残酷现实,成功地塑造了鲁智深、李逵、武松、林冲、阮小七等一批英雄人物。
小说故事情节曲折,语言生动,人物性格鲜明,具有高度的艺术成就。但作品歌颂、美化宋江,鼓吹“忠义”和“替天行道”,表现出严重的思想局限。
'''
NewBook.PHOTO = ''
NewBook.TYPE = '16'
NewBook.PAPERTOTAL = '922'
NewBook.WORDTOTAL = '912000'
NewBook.SELLSTARTTIME = '2006-03-20'
NewBook.SELLENDTIME = '2021-07-12'
NewBook.save()
print('插入成功')
#更新操作
def fun_update_book():
try:
obj = Book.objects.get(PRODUCTID=1) #返回结果有且只有一个
obj.NAME='水浒'
obj.save()
print('更新成功')
except Book.DoesNotExist:
print('PRODUCTID=1的记录不存在,未更新任何数据')
#删除操作
def fun_delete_book():
obj = Book.objects.filter(NAME='水浒') #返回QuerySet
del_rows=obj.count()
obj.delete()
print('删除'+str(del_rows)+'条记录')
(2)编写 dm\views.py 文件。
from django.shortcuts import render
# Create your views here.
from django.http import HttpResponse
from .services import fun_get_books
from .services import fun_insert_book
from .services import fun_update_book
from .services import fun_delete_book
def index(request):
# 查询
fun_get_books()
# 增加
fun_insert_book()
fun_get_books()
# 更新
fun_update_book()
fun_get_books()
# 删除
fun_delete_book()
fun_get_books()
return HttpResponse("执行结束,请到控制台查看输出结果。")
(3)在 dm 目录里新建 urls.py 文件。
from . import views
from django.urls import path
urlpatterns = [
path('', views.index, name='index'),
]
(4)在 mysite\urls.py 文件的 urlpatterns 列表中指定创建的 dm.urls 模块。
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('dm/',include('dm.urls')),
path('admin/', admin.site.urls),
]
(5)在命令行工具中输入以下命令,启动 Django 自带的简易服务器:
python manage.py runserver
默认使用浏览器访问 http://127.0.0.1:8000/dm/,即可查看输出结果。