陈军民
摘 要:高校信息化建设发展迅速,学校的业务部门根据各自的业务需求建立了很多信息管理系统。但由于没有统一规划,不可避免地出现了“信息孤岛”。本文针对高校信息化建设过程中,对不同数据库进行迁移与整合,建立统一的数据中心和网站应用的相关技术问题进行论述。
关键词:信息化建设;数据迁移;数据整合
一个单位在不同时段根据当时的工作需要,会建立各种不同的信息管理系统。由于历史的原因,这些系统的数据库平台不尽相同。如何对这些数据库进行迁移与整合,建立统一的数据中心和网站应用,这是一个单位信息化建设过程中必定会遇到且必须要解决的问题。本文以Django平台为例,介绍对原有不同数据库迁移和整合的技术问题。
一、Django平台连接多种不同的数据库
Django平台提供了非常便捷的方式连接各种不同的数据库。以某高校为例,教务管理系统应用的是MySQL数据库,智慧校园使用的是SQLite3的数据库。Django平台要同时连接这两种数据库,只要在setting.py文件中进行设置。
1、连接教务管理系统的MySQL数据库
DATABASES = {
'jwxt': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'jwxt',
'USER': ‘root,
'PASSWORD': ‘test123,
'HOST':192.168.0.10,
'PORT':3306,
}
}
其中,'jwxt'为Django平台连接教务管理系统数据库的连接名,'ENGINE':为连接mysql数据库的引擎,NAME为教务管理系统的数据库名称,USER为访问数据库的用户名,PASSWORD为访问数据库的密码,HOST为数据库服务器的IP地址,PORT为数据库服务器的端口。注意,上述数据为测试数据,在具体实践中应将这些数据设置为实际数据。
另外,Django平台访问MySQL,还需要安装包pymysql,并在与 settings.py 同级目录下的 init.py 中引入模块和进行配置,代码如下:
import pymysql
pymysql.install_as_MySQLdb()
2、连接智慧校园的SQLite3的数据库
DATABASES = {
'zhxy': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME':‘192.168.0.11/DB/db.sqlite3,
}
}
其中,zhxy是Django平台连接智慧校园的数据库连接名,ENGINE是连接SQLite3数据库的连接引擎。NAME是Django平台连接智慧校园的数据库文件路径,需要对方电脑提供共享。
二、Django平台对原有数据库进行转换与迁移
Django平台提供了对数据库统一管理的后台,但有一个前提,那就是需要将原有的数据库转换为模型数据库。而要使用模型,首先要建一个APP,且在设置文件中注册这个App。
1、建立与注册App
首先执行:django-admin startapp DBApp ,建立DBApp,然后在settings.py中,找到INSTALLED_APPS,注册DBApp。注册代码如下:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'DBApp',
]
2、對原有数据库进行转换
原有的数据库是关系数据库,需要将其转换为模型数据库。首先执行命令:Python manage.py inspectdb>ORM.txt,然后打开ORM.txt文件,就能得到模型数据库。
下面以MySQL的学生表为例。原有学生表的结构为:
CREATE TABLE `xs` (
`学号` char(6) NOT NULL,
`姓名` char(8) NOT NULL,
`专业名` char(10) NULL DEFAULT NULL,
`性别` tinyint(1) NOT NULL DEFAULT 1 ,
`出生时间` date NOT NULL,
`总学分` tinyint(1) NULL DEFAULT NULL,
`照片` blob NULL,
`备注` text NULL,
PRIMARY KEY (`学号`)
);
执行命令:python manage.py inspectdb xs>DBApp/models.py,打开models.py,可以看到以下模型代码:
class Xs(models.Model):
学号 = models.CharField(primary_key=True, max_length=6)
姓名 = models.CharField(max_length=8)
专业名 = models.CharField(max_length=10, blank=True, null=True)
性别 = models.TextField() # This field type is a guess.
出生时间 = models.DateField()
总学分 = models.TextField(blank=True, null=True) # This field type is a guess.
照片 = models.BinaryField(blank=True, null=True)
备注 = models.TextField(blank=True, null=True)
class Meta:
managed = False
db_table = 'xs'
注意,要管理这个数据表,需要将managed = False 改为managed = True。还有转换后的一些字段,不一定准确,后面出现:This field type is a guess,都需要人工检查,不符合要求的应进行修改。
最后执行:python manage.py migrate,对数据库的数据进行同步迁移。
三、Django平台的后台对数据库统一管理
Django平台提供了现成的后台对数据库统一管理,可以对现有的模型数据库进行增删改查。但要应用这些功能,首先应创建一个超级用户,然后再注册模型。
1、抢建一个超级用户
执行命令:python manage.py createsuperuser,设置用户名,密码和电子邮箱。
2、在DBApp.py文件中注册模型
From DBApp.models import Xs
Admin.site.register(Xs)
3、登录网站后台
执行命令 python manage.py runserver,在浏览器地址栏中输入:127.0.0.1/admin,输入超级用户名和密码,就可以进入网站后台对数据库进行管理。
参考文献:
[1]百度文库. https://wenku.baidu.com/view/f6f94f35a11614791711cc7931b765
ce05087abf.html_wkts_=1667285188879[OL].2021年3月
[2]錢彬. Python Web开发从入门到实践[M].清华大学出版社, 2020年7月