張怡 趙易 符浩 馮海 林森



關鍵詞:Django;ORM;Python;數據庫;制絲車間
0 引言
制絲車間維修備件是設備維護與保證設備正常連續工作的一個重要后備力量,并且人工統計的方式經常會出現信息偏差、數據維護困難、工作效率低下等問題。同時為了了解備件庫存情況,需要進行定期盤查,費時費力且容易出錯。由于對庫存情況不能做到實時準確的了解導致需求信息不能及時傳遞給公司的采購部門有時就會造成因為缺少備件而維修困難的問題,增加維修時長,影響設備生產的連續性,所以備件信息化管理需求越來越迫切。隨著信息技術的發展,已經有很多倉儲系統成功開發的案例,如:林楊的基于Java EE的倉庫管理系統[1];黃垚設計并開發出一種Java、Spring 與數據庫結合的倉庫管理系統[2];吳凡開發了一種應用RFID感應技術物聯網和計算機系統相結合的智能倉庫管理系統[3]。案例中可以看出倉儲管理系統可以應用數據庫實現信息的增加、刪除、更改等功能。為了實現維修備件倉庫的入庫、出庫、查詢、實時庫存等具有信息化智能化的制絲車間備件管理平臺,本文基于Djongo與數據庫開發了一套制絲車間備件管理系統。
1 應用技術
Python語言的語法簡潔而清晰,具有豐富和強大的類庫,常被稱為膠水語言[4]。并且Python語言是高級語言且具有簡單、開源、可以移植性、可擴展性、可嵌入性的特性以及具有豐富的類庫的特點,本文運用Python語言進行開發[5]。
1.1 數據庫
數據庫就是一種信息存儲工具,而計算機數據庫技術是管理信息數據時所常用的一種便捷高效的手段之一。常見的數據庫有MySQL、Oracle、SQL Server、MongoDB、Memcache、HBase等,其中MySQL具有易使用、開源性、接口豐富、開發成本低等優點[6],因此本文采用和MySQL作為后臺數據庫類型。
1.2 訪問數據庫方式
在Python系統中訪問數據庫一般有如圖1所示的兩種方式。一種是直接連接的,另外一種則是基于Django通過ORM訪問進行操作。
1.3 Django
Django是基于Python語言的一種開源網絡框架,采用MTV模型即Model-Template-View將業務邏輯、表示邏輯以及數據庫定義三者在應用開發過程中完全分離[7]。Model層功能塊通過ORM對數據進行處理封裝;Views層功能是展現數據,實現業務邏輯,是模型之間聯系的紐帶;Templates層功能是方式和效果的呈現。
1.4 ORM
ORM(Object Relational Mapping)即對象關系映射的概念,它可以基于Django對各種數據類型進行封裝并連接入庫得到一個數據庫API[8]。通過這一操作業務邏輯層可以對數據庫進行各種操作。
1.5 數據庫連接選擇
直接訪問的操作流程邏輯復雜、重復度高,并存在注入攻擊等安全風險問題,業務與數據邏輯分離困難。并且當需要改變遷移數據庫類型時,在系統中直接寫原生SQL會造成非常大的變更成本。
利用ORM間接訪問的方式與直接訪問的方式相比簡化了訪問方式、減少代碼的重復性、實現分層模式和提高安全特性的優點。并且它又擁有統一的訪問接口可以實現通用數據庫交互避免,避免了不同數據庫原生SQL語言不同的問題[9]。
因此,選擇基于Django通過ORM訪問數據庫的方式進行系統開發。
2 需求分析
2.1 需求分析
對系統的需求分析是開發的第一步,也是決定系統性能和最終功能的最重要的步驟。首先需要明確想要實現的功能需求,并且對這些需求的可行性、性能和功能等方面進行具體的分析。通過分析確定合理需求,排除不合理需求,提升開發效率縮短開發時間。經過分析與討論,本系統的主要功能是對備件信息的查詢。
2.2 功能需求
功能需求是在實現主需求條件下各項子功能的具體要求具體有:
1)用戶可以查詢通過關鍵字搜索到自己想要的備件信息,包括物料號、物料名稱、庫存和備件具體位置。
2)用戶可以在查到備件信息后對所需備件進行出入庫與刪除功能。
3)用戶可以添加倉庫內不存在的備件信息即“庫存新增”功能。
4)用戶可以對出入庫操作記錄進行查詢。
5)擁有用戶權限:當用戶登錄時可以對備件信息進行操作,如果沒有登錄則只能進行信息查詢,進行增刪改等功能時會直接跳轉到登錄頁面。
3 軟件設計
在Python中可以直接創建Django模塊,之后會自動生成基于Django的各種子功能程序文件,其主要文件的功能如下:
1)setting.py:對數據庫進行配置。
2)models.py:實現對數據操作配置。
3)migrations.py:對數據庫的變更進行記錄。
4)views.py:功能進行操作,實現用戶請求。
5)urls.py:配置函數。
3.1 連接數據庫
3.2 數據庫操作設置
在model.py中生成兩個數據模型分別為庫存列表和出入庫記錄。
3.3 視圖及其功能
功能的實現通過在主頁面進行請求,在url.py中的render函數對應過來,render函數內部讀取含有語法模板的HTML文件進行內部渲染其中模板語法執行并替換數據,最終得到的是只包含HTML標簽的字符串。最后將渲染完成的字符串返回給用戶瀏覽器。用以實現各種功能。
4 實現
該系統主要實現了頁面布局,查詢模塊,用戶登錄,用戶授權,操作記錄等功能。具體實現如下:當進入系統頁面后,首先彈出系統首頁如圖2所示,可在標頭欄找到自己想要進行的操作(具體有:維修組備件管理系統、庫存查詢和出入庫記錄),對備件進行查詢時不需要登錄,只需要在搜索欄找到自己需要找到的備件,點擊查詢即可,如圖3所示。
當需要對備件進行出入庫以及刪除操作時,如沒有登錄,當點擊操作按鈕時則自動跳轉登錄界面如圖4所示,如已經登錄則繼續操作,如圖5(a)、圖5(b)所示分別為出庫操作頁面、入庫操作頁面,刪除功能需要登錄特定賬號進行,操作只需點擊刪除按鈕即可。
當備件入庫時,先對備件進行查詢,如在數據庫中查詢不到此備件,則需要對其進行備件新增,其頁面如圖6所示。
當想要查詢歷史操作時,點擊標題欄(出入庫記錄)即可,如沒有登錄該系統頁面顯示為空,登錄后可以對出入庫歷史記錄進行查詢,如圖7(a)、圖7(b)所示分別為出庫、入庫紀錄查詢,查詢后可看到操作類型、時間、用戶名等信息。
5 結束語
本文基于Django的ORM框架,結合MySQL數據庫設計了一個制絲車間備件管理系統。該系統解決了備件重復整理的時間,縮短了維修時備件查找的時間,提高了維修效率保證了車間設備的持續生產。當有新的備件需要入庫時,不再需要在表格中查找標記,核對備件數量并重新紀錄,縮短了工作時間,防止記錄出錯。同時該系統還可以讓維修工對備件庫存有實時的掌握,以便對備件進行及時采購與更新。