基於python管理系統
㈠ 如何用python3做一個簡單的物資管理系統
1、批量導入Excel數據,批量導出到Excel。
2、首頁實時顯示物資在庫狀態,比如出庫了哪些、數量、出庫時間、借用人是誰(後期可能加入出庫簽名3、功能,再說)。可以選擇不同顯示方式:表格、圖表等。
4、登錄功能,設置幾個管理員,可以控制操作許可權等。
5、在線列印(可自動排版)或導出列印。
㈡ 鍩轟簬python鐨勭偣槨愮郴緇熺殑浠誨姟涔︼紵
浠ヤ笅鏄涓涓鍩轟簬 Python 鐨勭偣槨愮郴緇熺殑鍙鑳界殑浠誨姟涔︼紝渚涘弬鑰冿細
1. 欏圭洰姒傝堪
寮鍙戜竴涓鍩轟簬 Python 鐨勭偣槨愮郴緇燂紝浣跨敤鎴瘋兘澶熸柟渚垮湴嫻忚堣彍鍗曘佷笅鍗曘佹敮浠樸佹煡鐪嬭㈠崟絳夈傝ョ郴緇熷簲璇ュ叿鏈夎壇濂界殑鐢ㄦ埛浜や簰浣撻獙鍜屾暟鎹瀹夊叏鎬с
2. 鍔熻兘闇奼
- 鑿滃崟嫻忚堬細鐢ㄦ埛鍙浠ユ祻瑙堣彍鍗曘佹煡鐪嬩環鏍箋佽彍鍝佹弿榪板拰鍥劇墖絳変俊鎮銆
- 鑿滃搧鎼滅儲錛氱敤鎴峰彲浠ラ氳繃鍏抽敭璇嶆悳緔㈣彍鍝侊紝緋葷粺搴旇ユ敮鎸佹ā緋婃煡璇銆
- 鑿滃搧鍒嗙被錛氳彍鍝佸簲璇ユ寜鐓у垎綾誨睍紺猴紝鐢ㄦ埛鍙浠ユ牴鎹鍒嗙被蹇閫熸煡鎵捐彍鍝併
- 涓嬪崟錛氱敤鎴峰彲浠ュ皢鑿滃搧娣誨姞鍒拌喘鐗╄濺涓錛屽苟閫夋嫨鏁伴噺銆
- 緇撶畻錛氱敤鎴峰彲浠ユ煡鐪嬭喘鐗╄濺涓鐨勮彍鍝併佷慨鏀規暟閲忋佽$畻鎬諱環錛屽苟榪涜岀粨綆椼
- 鏀浠橈細鐢ㄦ埛鍙浠ラ夋嫨鏀浠樻柟寮忥紝濡傚井淇℃敮浠樸佹敮浠樺疂鏀浠樼瓑銆
- 璁㈠崟鏌ョ湅錛氱敤鎴峰彲浠ユ煡鐪嬪巻鍙茶㈠崟銆佽㈠崟璇︽儏銆佽㈠崟鐘舵佺瓑淇℃伅銆
- 鏁版嵁綆$悊錛氱$悊鍛樺彲浠ョ櫥褰曞悗鍙扮$悊緋葷粺錛岃繘琛岃彍鍝佺$悊銆佽㈠崟綆$悊絳夋搷浣溿
3. 闈炲姛鑳介渶奼
- 鐢ㄦ埛鍙嬪ソ鎬э細緋葷粺搴旇ュ叿鏈夎壇濂界殑鐢ㄦ埛浜や簰浣撻獙錛岀畝媧佹槑浜嗐佹槗浜庢搷浣溿
- 鏁版嵁瀹夊叏鎬э細緋葷粺搴旇ュ圭敤鎴風殑涓浜轟俊鎮鍜屾敮浠樹俊鎮榪涜屼繚鎶わ紝紜淇濇暟鎹瀹夊叏銆
- 鎬ц兘錛氱郴緇熷簲璇ュ叿鏈夎壇濂界殑鎬ц兘錛岃兘澶熷揩閫熷搷搴旂敤鎴瘋鋒眰錛屽勭悊澶ч噺騫跺彂璇鋒眰銆
4. 鎶鏈瀹炵幇
- 閲囩敤 Python 璇璦寮鍙戱紝浣跨敤 Django 妗嗘灦銆
- 鏁版嵁搴撻噰鐢 Mysql 鎴 PostgreSQL銆
- 鍓嶇閲囩敤 Bootstrap銆乯Query 絳夋妧鏈錛屽疄鐜板搷搴斿紡甯冨矓鍜岃壇濂界殑鐢ㄦ埛浜や簰浣撻獙銆
- 鏀浠樺姛鑳藉彲浠ユ帴鍏ョ涓夋柟鏀浠樺鉤鍙扮殑 API錛屽傚井淇℃敮浠樸佹敮浠樺疂鏀浠樼瓑銆
5. 欏圭洰璁″垝
- 闇奼傚垎鏋愶細1鍛
- 璁捐″拰寮鍙戱細6鍛
- 嫻嬭瘯鍜屼慨澶嶏細2鍛
- 涓婄嚎鍜岀淮鎶わ細闀挎湡
浠ヤ笂鏄涓涓鍩轟簬 Python 鐨勭偣槨愮郴緇熺殑鍙鑳界殑浠誨姟涔︼紝鍏蜂綋瀹炵幇鏂瑰紡鍜屾椂闂村畨鎺掗渶瑕佹牴鎹瀹為檯鎯呭喌榪涜岃皟鏁淬
㈢ 如何用python,html,資料庫建一個登陸管理系統
實現該系統需要具備python和資料庫相關知識,python的web框架可採用flask,帶有資料庫連接介面,通過配置資料庫鏈接以及相關介面進行數據操作,可以登錄flask查看相關文檔手冊,進入w3c學習sql相關開發知識。謝謝
㈣ Python 包管理工具
Python之所以受歡迎不光是因為它簡單易學,更重要的是它有成千上萬的寶藏庫。這些庫相當於是已經集成好的工具,只要安裝就能在Python里使用。它們可以處理各式各樣的問題,無需你再造輪子,而且隨著社區的不斷更新維護,有些庫越來越強大,幾乎能媲美企業級應用。那麼這些工具庫怎麼下載安裝呢?它們被放在一個統一的「倉庫」里,名叫PyPi(Python Package Index),所有的庫安裝都是從這里調度。有了倉庫之後,還需要有管理員,pip就是這樣一個角色。
pip 是 Python 中的標准庫管理器,這意味著它是一個工具,用它可以來管理 Python 標准庫中其他的包,允許你安裝和管理不屬於 Python 標准庫的其它軟體包,其提供了對 Python 包的查找、下載、安裝、卸載等功能。總的來說,pip的Python第三方庫的大管家,搞懂它,會讓你省很多事。從Python 3 >= Python 3.4 、Python2 >= Python2.7.9 版本開始,pip默認包含在Python的安裝程序中,在安裝Python時將會自動被安裝,省事方便。
Python 的安裝器中自帶了 pip,所以你可以直接使用它,除非你安裝的是更早版本的 Python。你可以通過以下命令來判斷是否已安裝:
如果你的 Python 環境沒有安裝 pip,則可以使用以下方法來手動安裝。pip 安裝文件下載: pypi.org/project/pip…
pip提供的命令不多,但是都很實用
pip命令默認使用的是國外的pypi鏡像(pypi.python.org),安裝慢不說,有時甚至會導致出現超時等網路問題,有時候為了安裝一個包,失敗重試安裝好幾次都不一定成功。所以,使用國內的pypi鏡像,亦即 切換 pip 源 ,這樣速度上更有保證,不失為一種加速pip安裝第三方包的好方法。常用的鏡像站有阿里雲、清華大學等。其中清華大學開源軟體鏡像站是每 5 分鍾同步一次的,比較推薦使用。阿里雲鏡像站的速度也非常快,這也是我現在在使用的。
切換切換 pip 源可以是臨時性的,也可以設置為默認。臨時性的,就是在安裝包時,通過pip命令的 -i 選項指定鏡像源即可。例如,臨時使用阿里雲鏡像站作為 pip 源,可以是這樣安裝:
如果每次安裝時都想要通過鏡像源來安裝,上面的辦法不免有些麻煩。我們可以修改pip的配置文件,將鏡像源寫入到 pip 配置文件中。 對於linux系統 ,修改 ~/.pip/pip.conf 文件 (沒有就創建一個文件夾及文件,文件夾要加「.」,表示是隱藏文件夾):
然後在文件中保存如下內容:
對於windows系統 ,在C:Users文件夾下的用戶目錄(例如如果當前用戶是Administrator則是C:UsersAdministrator)下創建pip文件夾,然後再在此文件夾下創建pip.ini文件,在文件中寫入一下內容:
配置完成後再通過 pip config list 查看pip配置。
我們經常會遇到這樣的開發需求,比如你手頭有多個開發項目,其中項目A要求用python3.7,項目B需要用python3.6,有要求項目A和項目B依賴包相互獨立,互不幹擾。為了滿足這樣的開發需求,我們需要在自己的電腦上安裝多個Python版本,並且項目之間進行環境隔離。因此,我們要想運行這些項目,在工作電腦上就要安裝不同版本的Python。 pyenv 是Python版本管理工具,通過系統修改環境變數來實現Python不同版本的切換,利用它可以在同一台電腦上安裝多個版本的Python,設置目錄級別的Python,還能創建和管理vitual python enviroments。而且所有的設置都是用戶級別的操作,不需要sudo命令。
首先安裝pyenv,如果你是Mac電腦,那麼推薦使用Homebrew來安裝。
要想升級pyenv,則可以執行:
pyenv安裝完成後,需要將$HOME/.pyenv/bin添加到PATH變數前面,這一步非常關鍵。
也可以採用手動安裝的方式,將pyenv檢出到你想安裝的目錄。
添加環境變數,將PYENV_ROOT 指向 pyenv 檢出的根目錄,並向 $PATH 添加 $PYENV_ROOT/bin 以提供訪問 pyenv命令的路徑。這里的 shell 配置文件(~/.bash_profile)依不同系統而需作修改,如果使用 Zsh 則需要相應的配置 ~/.zshrc
在使用 pyenv 之後使用 pip 安裝的第三方模塊會自動安裝到當前使用 python 版本下,不會和系統模塊產生沖突。使用 pip 安裝模塊之後,如果沒有生效,記得使用 pyenv rehash 來更新。
安裝完pyenv,可以安裝Python,首先查看可安裝的Python版本:pyenv install -l,接下來開始安裝Python
執行命令 pyenv versions 查看安裝結果。
可以看到,已經成功安裝了Python,安裝的位置在 /Users/dllwh/.pyenv。
可以看到,3.9.9 前面有一個星號,說明成功切換到了 3.9.9 版本,可以執行一下python來驗證。
Pipenv 是 Python 官方推薦的包管理工具,它綜合了 virtualenv、pip 和 pyenv 三者的功能,你可以使用 pipenv 這一個工具來安裝、卸載、跟蹤和記錄依賴性,並創建、使用和組織你的虛擬環境。
如果你是Mac電腦,那麼推薦使用Homebrew來安裝和升級pipenv:
也可以通過pip來安裝和升級pipenv:
進入到項目目錄中,通過下面的指令為項目創建虛擬環境。
上面的操作,給pipenv_demo這個項目初始化了一個 Python 3.9.9 的虛擬環境,並在項目錄下生成一個項目依賴包文件 Pipefile。如果系統中沒有 3.9.8 版本的Python,pipenv 會調用 pyenv 來安裝對應的 Python 的版本。默認地,虛擬環境會創建在 ~/.local/share/virtualenvs目錄裡面。我們也可以通過 pipenv --venv查看項目的虛擬環境目錄。可以通過 pipenv --rm 刪除虛擬環境。
如果想更改虛擬環境的目錄,可以在 .bashrc 或 .bash_profile 中,設置環境變數WORKON_HOME,指定虛擬環境的目錄所在位置,比如想將虛擬環境放到~/.venvs目錄,則可以執行下面的命令。
如果希望在項目目錄下創建虛擬環境目錄(.venv),需要在 .bashrc 或 .bash_profile 中配置環境變數PIPENV_VENV_IN_PROJECT:
pipenv使用 Pipfile 和 Pipfile.lock 來管理依賴包,並且在使用pipenv添加或刪除包時,自動維護 Pipfile 文件,同時生成 Pipfile.lock 來鎖定安裝包的版本和依賴信息。相比pip需要手動維護requirements.txt 中的安裝包和版本,具有很大的進步。
為項目安裝依賴包到虛擬環境中,使每個項目擁有相互獨立的依賴包,是非常不錯的Python的開發實踐。安裝依賴包到虛擬環境中的方法:
執行完上面的命令後,檢查一下是否安裝成功:
觀察項目的根目錄下,又多了一個 Pipfile.lock 文件。這兩個文件記錄了此項目的依賴包,這兩個文件的區別是 Pipfile 中安裝的包不包含包的具體版本號,而Pipfile.lock 是包含包的具體的版本號的。如果不想產生 Pipfile.lock 文件,在安裝依賴包的時候,加上 –skip-lock 選項即可。
在使用pipenv的時候,常常會安裝過程比較慢,這個是因為pipenv創建的 Pipfile 中默認的Pypi源是python官方的 pypi.python.org/simple。我們國內…
為了避免每次都要指定–pypi-mirror,我一般會在創建好Pipfile以後,將文件中 source 塊下的 url 欄位,設置為國內的 pypi 源,我推薦的是清華的Pypi源或者阿里源,具體設置如下:
如果是要刪除虛擬環境中的第三方包,執行:
用git管理項目時候,要把Pipfile和Pipfile.lock加入版本跟蹤。這樣clone了這個項目的同學,只需要執行:
就可以安裝所有的Pipfile中 [packages]部分列出來的包了,並且自動為項目在自己電腦上創建了虛擬環境。
上面的方法都是安裝Pipfile中列出來的第三方包的最新版本,如果是想安裝Pipfile.lock中固定版本的第三方依賴包,需要執行:
如果項目之前使用requirements.txt來管理依賴的,那麼使用pipenv安裝所有依賴可以採用類似pip的方法:
虛擬環境創建好了之後,就可以在裡面進行開發了。如果在命令行下開發,則在項目目錄下執行 pipenv shell ,就進入到了虛擬環境中,在這個環境中,已經包含安裝過的所有依賴包了,接下來就可以利用這些依賴包進行開發工作了。如果是用Pycharm進行開發,就更簡單了,直接用Pycharm打開項目即可。可以從Pycharm中的左側導航欄裡面看到External Libraries顯示的是虛擬環境中的Python解釋器了。
在虛擬環境中執行開發好的程序,有兩種方式,一種是前面提到的先執行pipenv shell進入到虛擬環境後,再執行python程序;另一種方式,則是執行pyenv run,比如在虛擬環境中執行基於pytest框架編寫的測試用例,只需要執行下面的命令即可:
作者:獨淚了無痕
鏈接:https://juejin.cn/post/7063699409703272485
㈤ 如何基於Python構建一個可擴展的運維自動化平台
Django- 一個開放源代碼的 Web 應用框架,由 Python 寫成,採用了 MVC 的軟體設計模式;
rpyc- 一個 Python 實現的 RPC 和分布式計算的工具。支持同步和非同步操作、回調等;
saltstack 、 ansible 、 func - 基本 Python 開發的自動化配置管理與流程式控制制組件;
Mysql- 是一個非常流行的關系型資料庫管理系統。
二、平台架構設計
1、 OMServer 架構圖
大家對這個架構應該不會感到陌生,三層結構也是目前主流的運營平台架構。
2、 架構說明
OMServer 平台為三層架構,分別為 WEB 交互層、分布式計算層、集群管理服務層。
1) 、第一層:即為 WEB 交互層,典型的 B/S 架構,以供管理員操作的交互平台,也是 OMServer 的核心,基於 Django 開發;
2) 、第二層:分布式計算層,提供與主控端的連接通道,採用的是 rpyc 傳輸協議,協議操作流程:前端模塊參數 -> 加密傳輸 -> 任務執行 -> 返回結果集 -> 解密輸出。
3) 、第三層:集群管理服務層,整合 Python 主流的遠程操作組件(支持 Saltstack 、 Anaible、 Func ),對被控端(業務伺服器集群)進行管理,其中主控端可以根據不同 IDC 環境,採用多地多點的管理方式,可提升冗餘度及執行效率。主控端操作模塊以不同 Python 文件加以區分,便於維護,可靈活定製操作邏輯及橫向擴展等特點。
㈥ 用python編寫的一個學生成績管理系統
# -*- coding: cp936 -*-
class StuInfo:
def __init__(self):
self.Stu=[{"Sno":"1","Sname":"姓名","ChineseScore":64,"MathsScore":34,"EnglishScore":94,"ComputerScore":83},
{"Sno":"2","Sname":"姓名","ChineseScore":44,"MathsScore":24,"EnglishScore":44,"ComputerScore":71},
{"Sno":"3","Sname":"姓名","ChineseScore":74,"MathsScore":35,"EnglishScore":74,"ComputerScore":93},
{"Sno":"4","Sname":"姓名","ChineseScore":94,"MathsScore":54,"EnglishScore":24,"ComputerScore":73}]
self.attribute={"Sno":"學號",
"Sname":"姓名",
"ChineseScore":"語文成績",
"MathsScore":"數學成績",
"EnglishScore":"英語成績",
"ComputerScore":"計算機成績"
}
def _add(self):
'''添加'''
singleInfo={}
for i in self.attribute:
if "Score" in i:
singleInfo[i]=int(raw_input(self.attribute[i]+"\n"))
else:
singleInfo[i]=raw_input(self.attribute[i]+"\n").strip()
self.Stu.append(singleInfo)
print "添加成功OK"
for i in singleInfo:
print i,"=",singleInfo[i]
def _del(self):
"""刪除學號為Sno的記錄"""
Sno=raw_input("學號:\n")
self.Stu.remove(self.__getInfo(Sno))
print "刪除成功OK"
def _update(self):
"""更新數據"""
Sno=raw_input("學號\n").strip()
prefix="修改"
updateOperate={"1":"ChineseScore",
"2":"MathsScore",
"3":"EnglishScore",
"4":"ComputerScore"}
for i in updateOperate:
print i,"-->",prefix+self.attribute[updateOperate[i]]
getOperateNum=raw_input("選擇操作:\n")
if getOperateNum:
getNewValue=int(raw_input("輸入新的值:\n"))
record=self.__getInfo(Sno)
record[updateOperate[getOperateNum]]=getNewValue
print "修改"+record["Sname"]+"的"+str(updateOperate[getOperateNum])+"成績=",getNewValue,"\n成功OK"
def _getInfo(self):
"""查詢數據"""
while True:
print "1->學號查詢 2->條件查詢 3->退出"
getNum=raw_input("選擇:\n")
if getNum=="1":
Sno=raw_input("學號:\n")
print filter(lambda record:record["Sno"]==Sno,self.Stu)[0]
elif getNum=="2":
print "ChineseScore 語文成績;","MathsScore 數學成績;","EnglishScore 英語成績;","ComputerScore 計算機成績;"
print "等於 ==,小於 <, 大於 > ,大於等於 >=,小於等於<= ,不等於!="
print "按如下格式輸入查詢條件 eg: ChineseScore>=60 "
expr=raw_input("條件:\n")
Infos=self.__getInfo(expr=expr)
if Infos:
print "共%d記錄"%len(Infos)
for i in Infos:
print i
else:
print "記錄為空"
elif getNum=="3":
break
else:
pass
def __getInfo(self,Sno=None,expr=""):
"""查詢數據
根據學號 _getInfo("111111")
根據分數 _getInfo("EnglishSorce>80")"""
if Sno:
return filter(lambda record:record["Sno"]==Sno,self.Stu)[0]
for operate in [">=",">","<=","<","==","!="]:
if operate in expr:
gradeName,value=expr.split(operate)
return filter(lambda record: eval( repr(record[gradeName.strip()])+operate+value.strip()) ,self.Stu)
return {}
def _showAll(self):
"""顯示所有記錄"""
for i in self.Stu:
print i
@staticmethod
def test():
"""測試"""
_StuInfo=StuInfo()
while True:
print "1->錄入數據 2->修改數據 3->刪除數據 4->查詢數據 5->查看數據 6->退出"
t=raw_input("選擇:\n")
if t=="1":
print "錄入數據"
_StuInfo._add()
elif t=="2":
print "修改數據"
_StuInfo._update()
elif t=="3":
print "刪除數據"
_StuInfo._del()
elif t=="4":
print "查詢數據"
_StuInfo._getInfo()
elif t=="5":
print "顯示所有記錄"
_StuInfo._showAll()
elif t=="6":
break
else:
pass
if __name__=="__main__":
StuInfo.test()