陳軍民
摘 要:高校信息化建設發(fā)展迅速,學校的業(yè)務部門根據各自的業(yè)務需求建立了很多信息管理系統。但由于沒有統一規(guī)劃,不可避免地出現了“信息孤島”。本文針對高校信息化建設過程中,對不同數據庫進行遷移與整合,建立統一的數據中心和網站應用的相關技術問題進行論述。
關鍵詞:信息化建設;數據遷移;數據整合
一個單位在不同時段根據當時的工作需要,會建立各種不同的信息管理系統。由于歷史的原因,這些系統的數據庫平臺不盡相同。如何對這些數據庫進行遷移與整合,建立統一的數據中心和網站應用,這是一個單位信息化建設過程中必定會遇到且必須要解決的問題。本文以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
首先執(zhí)行: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、對原有數據庫進行轉換
原有的數據庫是關系數據庫,需要將其轉換為模型數據庫。首先執(zhí)行命令:Python manage.py? inspectdb>ORM.txt,然后打開ORM.txt文件,就能得到模型數據庫。
下面以MySQL的學生表為例。原有學生表的結構為:
CREATE TABLE `xs`? (
`學號` char(6) NOT NULL,
`姓名` char(8) NOT NULL,
`專業(yè)名` 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 (`學號`)
);
執(zhí)行命令: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)
專業(yè)名 = 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,都需要人工檢查,不符合要求的應進行修改。
最后執(zhí)行:python manage.py migrate,對數據庫的數據進行同步遷移。
三、Django平臺的后臺對數據庫統一管理
Django平臺提供了現成的后臺對數據庫統一管理,可以對現有的模型數據庫進行增刪改查。但要應用這些功能,首先應創(chuàng)建一個超級用戶,然后再注冊模型。
1、搶建一個超級用戶
執(zhí)行命令:python manage.py createsuperuser,設置用戶名,密碼和電子郵箱。
2、在DBApp.py文件中注冊模型
From DBApp.models import Xs
Admin.site.register(Xs)
3、登錄網站后臺
執(zhí)行命令 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開發(fā)從入門到實踐[M].清華大學出版社, 2020年7月