陳軍民
摘 要:高校信息化建設發(fā)展迅速,學校的業(yè)務部門根據(jù)各自的業(yè)務需求建立了很多信息管理系統(tǒng)。但由于沒有統(tǒng)一規(guī)劃,不可避免地出現(xiàn)了“信息孤島”。本文針對高校信息化建設過程中,對不同數(shù)據(jù)庫進行遷移與整合,建立統(tǒng)一的數(shù)據(jù)中心和網站應用的相關技術問題進行論述。
關鍵詞:信息化建設;數(shù)據(jù)遷移;數(shù)據(jù)整合
一個單位在不同時段根據(jù)當時的工作需要,會建立各種不同的信息管理系統(tǒng)。由于歷史的原因,這些系統(tǒng)的數(shù)據(jù)庫平臺不盡相同。如何對這些數(shù)據(jù)庫進行遷移與整合,建立統(tǒng)一的數(shù)據(jù)中心和網站應用,這是一個單位信息化建設過程中必定會遇到且必須要解決的問題。本文以Django平臺為例,介紹對原有不同數(shù)據(jù)庫遷移和整合的技術問題。
一、Django平臺連接多種不同的數(shù)據(jù)庫
Django平臺提供了非常便捷的方式連接各種不同的數(shù)據(jù)庫。以某高校為例,教務管理系統(tǒng)應用的是MySQL數(shù)據(jù)庫,智慧校園使用的是SQLite3的數(shù)據(jù)庫。Django平臺要同時連接這兩種數(shù)據(jù)庫,只要在setting.py文件中進行設置。
1、連接教務管理系統(tǒng)的MySQL數(shù)據(jù)庫
DATABASES = {
'jwxt': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'jwxt',
'USER': ‘root,
'PASSWORD': ‘test123,
'HOST':192.168.0.10,
'PORT':3306,
}
}
其中,'jwxt'為Django平臺連接教務管理系統(tǒng)數(shù)據(jù)庫的連接名,'ENGINE':為連接mysql數(shù)據(jù)庫的引擎,NAME為教務管理系統(tǒng)的數(shù)據(jù)庫名稱,USER為訪問數(shù)據(jù)庫的用戶名,PASSWORD為訪問數(shù)據(jù)庫的密碼,HOST為數(shù)據(jù)庫服務器的IP地址,PORT為數(shù)據(jù)庫服務器的端口。注意,上述數(shù)據(jù)為測試數(shù)據(jù),在具體實踐中應將這些數(shù)據(jù)設置為實際數(shù)據(jù)。
另外,Django平臺訪問MySQL,還需要安裝包pymysql,并在與 settings.py 同級目錄下的 init.py 中引入模塊和進行配置,代碼如下:
import pymysql
pymysql.install_as_MySQLdb()
2、連接智慧校園的SQLite3的數(shù)據(jù)庫
DATABASES = {
'zhxy': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME':‘192.168.0.11/DB/db.sqlite3,
}
}
其中,zhxy是Django平臺連接智慧校園的數(shù)據(jù)庫連接名,ENGINE是連接SQLite3數(shù)據(jù)庫的連接引擎。NAME是Django平臺連接智慧校園的數(shù)據(jù)庫文件路徑,需要對方電腦提供共享。
二、Django平臺對原有數(shù)據(jù)庫進行轉換與遷移
Django平臺提供了對數(shù)據(jù)庫統(tǒng)一管理的后臺,但有一個前提,那就是需要將原有的數(shù)據(jù)庫轉換為模型數(shù)據(jù)庫。而要使用模型,首先要建一個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、對原有數(shù)據(jù)庫進行轉換
原有的數(shù)據(jù)庫是關系數(shù)據(jù)庫,需要將其轉換為模型數(shù)據(jù)庫。首先執(zhí)行命令:Python manage.py? inspectdb>ORM.txt,然后打開ORM.txt文件,就能得到模型數(shù)據(jù)庫。
下面以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'
注意,要管理這個數(shù)據(jù)表,需要將managed = False 改為managed = True。還有轉換后的一些字段,不一定準確,后面出現(xiàn):This field type is a guess,都需要人工檢查,不符合要求的應進行修改。
最后執(zhí)行:python manage.py migrate,對數(shù)據(jù)庫的數(shù)據(jù)進行同步遷移。
三、Django平臺的后臺對數(shù)據(jù)庫統(tǒng)一管理
Django平臺提供了現(xiàn)成的后臺對數(shù)據(jù)庫統(tǒng)一管理,可以對現(xiàn)有的模型數(shù)據(jù)庫進行增刪改查。但要應用這些功能,首先應創(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,輸入超級用戶名和密碼,就可以進入網站后臺對數(shù)據(jù)庫進行管理。
參考文獻:
[1]百度文庫. https://wenku.baidu.com/view/f6f94f35a11614791711cc7931b765
ce05087abf.html_wkts_=1667285188879[OL].2021年3月
[2]錢彬. Python Web開發(fā)從入門到實踐[M].清華大學出版社, 2020年7月