Python学生信息管理系统搭建全攻略:从入门到配置管理
如何用python做一个系统?
使用Python搭建学生信息管理系统时,分工是怎样的?分工分为三步:
1显示学生管理系统的功能菜单
2.接收用户输入的函数
3判断用户输入的功能选项并执行相关操作
Python实现了一个非常简单的学生信息,它只是一个简单的原型,并没有实现插入数据库。
它只写TXT文件,可以作为入门学习。
实现学生信息录入、查找、删除、修改、排序、统计学生人数、查看学生信息等功能。
Python是一种广泛使用的高级通用解释型编程语言。
[1]Python由荷兰数学和信息学会的GuidovanRossum开发。
第一个版本于1991年发布。
它是ABC语言的继承者,也可以被视为具有传统中缀表达式的LISP方言。
1导入库
主要功能
4.查看主页
5.输入学生信息
6将学生信息保存到文件
7.搜索并查看学生信息
9.删除学生信息10.更改学生信息
11.对学生信息进行排序
12.显示学生人数
13。
查看所有学生信息
如何以Python类的形式管理系统——Python配置管理多种方式
1、为什么要用配置?
如果我们在更复杂的项目中不使用配置文件,我们可能会面临以下情况:
您决定更改项目中数据库的主机。
因为你想把项目从测试环境搬到实际的生产环境。
如果该主机在项目中的多个位置使用,您将需要单独找到这些位置并将它们更改为新主机。
搞了半天,一天后你发现生产环境的项目出现了一些问题,需要移回测试环境。
这是非常尴尬和不优雅的。
你开发了一个很棒的开源项目,想把它放到像Github这样的版本控制系统上,但是你的服务器的主机地址、账号和密码也被上传了,但是你意识不到那不是你的,直到坏人掌握您的信息,从您的服务器窃取信息,攻击您的服务器,给您带来巨大的损失。
然后你想更改程序并删除地址和密码等敏感信息,但由于版本控制,其他人仍然可以看到你以前版本的代码。
所以你必须更改你的帐户、密码等,这实在是一个可悲的开源项目经历。
但是,如果使用配置管理,它具有以下优点:
这提高了代码的可重用性,您不再需要每次都更改内部代码
这意味着其他不了解你代码内部工作原理的人只需根据自己的需求更改配置就可以使用你的项目
有利于团队协作
有利于安全/秘密数据的管理数据
2几种选择Python中的配置管理
随着Python的使用越来越频繁,基于Python的配置管理指令当然和其他语言类似,基本思想是一样的。
2.1使用Python内置的数据结构(例如字典)
2.1.1单个文件下的单个配置
当然,我们可以想象如下:例如下面的代码:
在上面的代码中我们可以看到,我们两次使用了相同的数据库配置。
如果我们需要更改密码等数据库相关数据,则不需要在两个方法内更改,只需更改DATABASE_CONFIG字典中的相关值即可。
与没有配置管理之前相比,工作量明显减少。
2.1.2多个文件之间单一配置
但是当你的项目变得复杂的时候,这时候你的文件就不再是单一的那么简单在main2.py中使用DATABASE_C时使用ONFIG,这个不是很方便,因为直接导入main时,虽然可以使用main.DATABASE_CONFIG,但是main.py中的
也会同时被执行。
这不是我们想要看到的,所以有了新的需求,我们可以轻松快速地将我们的数据库配置DATABASE_CONFIG导入到同一个项目下的不同文件中。
因此,我们想出了下面的方法来解决这个问题:
根据上面的代码,我们可以在两个不同的文件main1.py和main2.py中引用config.py中的配置。
我们的配置管理似乎更进了一步。
2.1.3单个文件下的多个配置
我们的项目有可能需要多个配置文件,例如一个测试环境和一个生产环境。
从单个文件开始,我们可以使用以下解决方案:
这样我们就可以从一个配置文件中获取不同级别的不同配置。
2.1.4多个文件下的多个配置
与上面类似,只是从不同的文件中读取同一个配置文件的不同配置:
这使得使用更加灵活。
不同的配置可以从不同的文件中读取,我们只需要在config.py中添加、删除、修改配置即可。
2.2使用外部配置文件
与使用Python内置的数据结构相比,使用外部配置文件是一种更通用的方法,因为这些文件仅被视为配置文件。
它没有像config.py这样的代码属性。
外部配置文件有不同的格式。
当我们使用它们时,根据文件格式的不同,我们有不同的读取方法。
例如:*.yaml或*.yml、*.json、*.cfg或*.conf、*.ini甚至您的自定义文件*.YourName。
2.2.1YAML
YAML(/?j?m?l/,结尾听起来像Camel)是一种人类可读的格式,用于表示数据序列化。
YAML引用了许多其他语言,包括C语言、Python、Perl,并从XML和电子邮件数据格式(RFC2822)中汲取灵感。
ClarkEvans于2001年首次发布了这种语言[1],IngydötNet和OrenBen-Kiki也是这种语言的共同设计者[2]。
目前有多种编程或脚本语言支持(或解析)这种语言。
-----中文维基百科
YAML看起来像下面的格式:
配置也很容易要将Python写入YAML,只需使用Yaml.dump(dict),dict指的是配置的字典。
更详细的信息请参见PyYAML文档
2.2.2INI
INI文件是一个配置文件,没有固定的标准格式。
它由简单的文本和简单的结构组成。
常用于Windows操作系统或其他操作系统。
许多程序也使用INI文件作为设置程序。
Windows操作系统后来以注册表的形式取代了INI文件。
INI文件的名称来源是英文缩写“Initial”,对应初始化程序的用途。
有时INI文件也会被其他扩展名替换,例如“.CFG”、“.CONF”或“.TXT”。
-----中文维基百科
看起来像这样:
这将在INI配置文件中的mysql部分输出host值
编写INI配置文件也很简单,参考如下代码即可:
2.2.3JSON
JSON是JavaScript的缩写对象表示法。
它非常广泛,因此可以很好地支持许多编程语言。
它的格式也是大家非常熟悉的,看起来和Python中的字典很相似:
用JSON写配置也很容易,看下面的代码:
其他格式大多数文档都是这样,就不赘述了。
并且还可以在外部配置文件中配置多种配置(MySQL、其他等)
2.3环境变量的使用
但是回到我们一开始讲的问题:上面两种配置管理方案(使用Python内置数据结构和使用外部配置文件)都忽略了两个问题:
第一:如何处理安全数据直接暴露给公众的潜在问题??问题是:如果我们需要使用像Github这样的版本控制系统,也许我们可以尝试将config.py文件放在.gitignore中。
但是,如果有一天我们更改了仓库,忘记忽略config.py文件并将其推送到GitHub,那么我们的安全相关信息将继续与公众共享。
由于版本控制的原因,即使您删除它,仍然会出现此提示“录音将很难处理。
其次,如果我们想在本地打开一个新项目,该项目也必须指向同一个数据库配置文件。
我们也许可以找到第一个项目文件夹并将config.py复制到NewProject文件夹中。
嗯,这似乎是可行的,但是如果你想打开十几个新项目或数百个项目怎么办?
所以我们可以介绍下配置管理的方法,它是比较人性化的解决上面两个问题,即环境变量的使用,各种开发环境(Win、Mac、Linux)。
设置不同,可以参考这篇文章。
此外,PyCharm和VSCode有更方便的配置方法,可以为不同的项目分配不同的设置。
在PyCharm中,在“运行/编辑配置”菜单中手动设置环境变量。
在VSCode中,在“设置”下搜索“env”,然后选择与终端相关的“终端”到你的操作系统IntegratedEnv:YourOS,点击添加在“settings.json”上。
使用环境变量来配置值不需要作为单独的文件维护,因此安全风险较小,可以在您的开发环境中使用。
它可以在任何项目或代码库中使用,但管理起来可能有点复杂。
有些环境不能使用环境变量,例如:B.Apache、Nginx和其他Web服务器。
在这种情况下,必须使用其他方法。
2.4使用动态加载
这种方法比使用Python内置的数据结构更先进。
内置数据结构方法要求配置文件位于可直接导入的路径。
但是,通过动态加载,配置文件不必位于可以直接导入的路径中,甚至可以位于其他存储库中。
这种情况下,配置文件是与项目分离的,其他项目也可以动态加载这个配置文件,例如:
有些软件项目甚至可以混合上述方法,例如Airbnb的Airflow。
另外,如果系统规模非常大,最好使用主要提供配置管理的第三方工具或服务。
相关服务可以在这里找到。
如何创建Python操作系统以及如何启动它?
注意:尽量不要在物理机上进行以下操作。
最好使用虚拟机。
教简单的Linux系统开发:
安装任意Linux系统(推荐RaspbianJessie)
编辑文件:
>/etc/xdg/lxsession/LXDE-pi/autostart
/etc/xdg/lxsession/LXDE/autostart
添加一个在两个文件中添加行:
@sudopython/full/path/to/file.py和@openbox
创建bash脚本:
sudoapt-get-yinstallnodm
#Editnodmconfigfile
sudosed-i-e"s/NODM_ENABLED=false/NODM_ENABLED=true/"-e"s/NODM_USER=root/NODM_USER=pi/"\?/etc/default/nodm
#CreatecustomXsessionfile
printf"%s\n“\
“#!/usr/bin/envbash”\
“execopenbox-session”\
“whiletrue;do”\
“?python3$PWD/main.py”\
“完成”\
/home/pi/.xsession
Hand只需将上面的路径(/path/to/)替换为py文件所在的路径即可。
重启电脑即可得到(GUI-)调用界面
如果您有任何疑问,可以私聊或者追踪
希望以上信息可以帮助到您
啊哈!Python环境管理原来如此简单
在日常的发展中,Python内置的venv模块用于创建虚拟环境,以满足不同的包依赖需求。然而,我遇到了两个对Python环境有不同要求的开源项目。
项目A建议使用Python版本3.8.1。
项目B的install.sh安装脚本默认安装pyenv来管理Python环境。
这引发了复杂的环境管理问题。
为了应对这些挑战,本文将深入分析miniconda和pyenv这两种环境管理方案,以及Python虚拟环境的原理。
回到Python环境管理的核心。
我们需要了解系统路径的作用。
当您在命令行中输入命令时,操作系统使用$PATH环境变量来定位与命令关联的可执行文件或脚本。
任何命令都可用于显示与该命令关联的可执行文件的位置。
在Linux系统上;输入命令时,有一个PATH环境变量指定目录顺序。
系统会根据这些目录去寻找可执行文件,采用先找到谁运行的原则。
了解这一点对于了解这些环境管理工具的工作原理非常重要。
Python虚拟环境的依赖管理;环境的隔离它广泛用于在没有系统管理权限的情况下安装和部署Python包以及对多个版本的Python进行自动化测试。
使用python-mvenv命令创建虚拟环境时,Python解释器被复制到新创建的虚拟环境目录中。
当您通过执行sourcebin/activate命令激活虚拟环境时;activate脚本会将当前的$PATH值保存到$_OLD_VIRTUAL_PATH,然后将虚拟环境的根目录添加到$PATH变量的第一位;python命令是虚拟环境中的Python解释器。
conda/miniconda是一个开源的包管理系统和环境管理系统,可用于安装和管理软件包及其依赖项。
miniconda提供了简单的安装过程;只需下载并运行安装脚本即可。
启动后miniconda所在路径添加到$PATH的顶部;替换了系统上的Python解释器,并创建了一个软链接以指向miniconda上的Python版本。
condacreate命令可用于创建conda环境并在不同环境中安装特定版本的Python解释器。
在系统上安装不同版本的Python后;使用condaenvlist命令查看已创建的conda环境,启用不同的环境来满足项目需求。
可以使用。
pyenv使用shims来管理不同版本的Python解释器。
shims文件位于~/.pyenv/shims目录下,用于优先调用兼容版本的Python文件,而不是系统默认的Python。
安装特定Python版本时;pyenv通过添加源代码将Python安装到~/.pyenv/versions目录中,并将shims目录添加到$PATH目录的顶部。
pyenv搜索Python版本的顺序是:当前目录下的.pyenv_version文件;主目录中的.pyenv_version文件;根目录下的.pyenv_version文件;和$PYENV_VERSION环境变量。
pyenv的一个重要特性是它可以将Python环境绑定到路径上,这样开发人员就不必每次都手动更改环境。
综上所述,conda和pyenv结合Python内置的venv模块可以解决不同Python项目的版本兼容性和包依赖问题。
选择环境管理工具时;考虑使用Docker容器来隔离不同应用所需的环境,避免系统中多个管理工具造成冲突。