Python简易信息管理系统

我们将通过一个实例来探讨如何使用Python与MySQL数据库进行交互,以构建一个简单的学生信息管理系统。这个系统将能够执行基本的CRUD(创建(Create)、读取(Retrieve)、更新(Update)、删除(Delete))操作,以管理学生信息。我们将使用`mysql-connector-python`库来连接MySQL数据库,该库是官方推荐的Python MySQL驱动程序。

#### 准备工作

首先,确保你的环境中安装了MySQL服务器和Python。接下来,安装`mysql-connector-python`库:

```bash

pip install mysql-connector-python


```

#### 数据库准备

1. **创建数据库**: 登录到MySQL客户端,创建一个名为`student_manager`的数据库。

```sql

CREATE DATABASE student_manager;
USE student_manager;


```

2. **创建表**: 创建一个名为`students`的表,用来存储学生信息。

```sql

CREATE TABLE students (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(50) NOT NULL,age INT,class VARCHAR(10)
);


```

#### Python代码实现

接下来,我们使用Python编写一个简单的脚本来实现学生信息管理系统的功能。```python

import mysql.connector
from mysql.connector import Errordef create_connection():"""创建数据库连接"""connection = Nonetry:connection = mysql.connector.connect(host='localhost',user='your_username',  # 替换为你的MySQL用户名password='your_password',  # 替换为你的MySQL密码database='student_manager')print("Connection to MySQL DB successful")except Error as e:print(f"The error '{e}' occurred")return connectiondef execute_query(connection, query):"""执行SQL查询"""cursor = connection.cursor()try:cursor.execute(query)connection.commit()print("Query executed successfully")except Error as e:print(f"The error '{e}' occurred")def fetch_data(connection, query):"""获取数据"""cursor = connection.cursor()result = Nonetry:cursor.execute(query)result = cursor.fetchall()return resultexcept Error as e:print(f"The error '{e}' occurred")finally:cursor.close()def main():connection = create_connection()# 插入数据示例insert_query = """INSERT INTO students (name, age, class) VALUES('Alice', 20, 'A1'),('Bob', 22, 'B2'),('Charlie', 19, 'A1');"""execute_query(connection, insert_query)# 查询所有学生select_query = "SELECT * FROM students"students = fetch_data(connection, select_query)for student in students:print(student)# 更新数据示例update_query = "UPDATE students SET class = 'C3' WHERE name = 'Bob'"execute_query(connection, update_query)# 删除数据示例delete_query = "DELETE FROM students WHERE name = 'Charlie'"execute_query(connection, delete_query)connection.close()if __name__ == '__main__':main()


```

#### 解释

- **`create_connection`**: 创建一个到MySQL数据库的连接。
- **`execute_query`**: 执行SQL查询,用于插入、更新和删除操作。
- **`fetch_data`**: 执行查询并返回所有结果,主要用于检索数据。
- **`main`**: 主函数,展示了如何使用上述函数完成CRUD操作。首先插入几条示例数据,然后查询所有学生信息并打印,接着更新和删除学生记录。

#### 注意事项

- 在实际应用中,请确保替换`your_username`和`your_password`为你的MySQL数据库的实际登录凭证。
- 本示例中的SQL语句是硬编码的,实际开发中可能需要根据用户输入动态构建SQL语句,注意防范SQL注入攻击。
- 在处理完数据库操作后,记得关闭连接以释放资源。

为了将上述Python与MySQL交互的简单学生信息管理系统以网页的形式展示,我们可以使用Flask框架,这是一个轻量级的Web服务器网关接口(WSGI)框架,非常适合小型应用和初学者学习Web开发。下面是如何将上述功能转化为一个简单的网页应用的示例。

### 安装Flask

首先,确保安装Flask和Flask-MySQL库:

```bash

pip install Flask flask-mysqldb


```

### 编写Flask应用

接下来,创建一个名为`app.py`的文件,编写Flask应用代码:```python

from flask import Flask, render_template, request, redirect, url_for
from flask_mysqldb import MySQLapp = Flask(__name__)# 配置MySQL
app.config['MYSQL_HOST'] = 'localhost'
app.config['MYSQL_USER'] = 'your_username'  # 替换为你的MySQL用户名
app.config['MYSQL_PASSWORD'] = 'your_password'  # 替换为你的MySQL密码
app.config['MYSQL_DB'] = 'student_manager'mysql = MySQL(app)@app.route('/')
def index():cur = mysql.connection.cursor()cur.execute('SELECT * FROM students')data = cur.fetchall()cur.close()return render_template('index.html', students=data)@app.route('/add_student', methods=['POST'])
def add_student():if request.method == 'POST':name = request.form['name']age = request.form['age']class_ = request.form['class']cur = mysql.connection.cursor()cur.execute('INSERT INTO students (name, age, class) VALUES (%s, %s, %s)', (name, age, class_))mysql.connection.commit()cur.close()return redirect(url_for('index'))@app.route('/delete/<string:id>')
def delete_student(id):cur = mysql.connection.cursor()cur.execute('DELETE FROM students WHERE id = %s', (id,))mysql.connection.commit()cur.close()return redirect(url_for('index'))if __name__ == '__main__':app.run(debug=True)


```

### 创建HTML模板

在你的项目目录下创建一个名为`templates`的文件夹,并在其中创建一个`index.html`文件,用于展示学生列表和添加学生的表单:

```html

<!doctype html>
<html>
<head><title>学生信息管理系统</title><!-- 内联样式 --><style>body {font-family: Arial, sans-serif;margin: 20px;}h2 {color: #4CAF50;margin-bottom: 10px;}table {width: 100%;border-collapse: collapse;}th, td {padding: 15px;text-align: left;border: 1px solid #ddd;}th {background-color: #f2f2f2;font-weight: bold;}tr:nth-child(even) {background-color: #f2f2f2;}tr:hover {background-color: #ddd;}form input[type="submit"] {background-color: #4CAF50;color: white;padding: 8px 16px;border: none;cursor: pointer;}form input[type="submit"]:hover {background-color: #45a049;}</style>
</head>
<body><h2>学生列表</h2><table border="1"><tr><th>ID</th><th>姓名</th><th>年龄</th><th>班级</th><th>操作</th></tr><!-- 假设这里由后端动态填充学生数据 --><!-- 示例数据,实际应用中将由Flask动态生成 -->{% for student in students %}<tr><td>{{ student[0] }}</td><td>{{ student[1] }}</td><td>{{ student[2] }}</td><td>{{ student[3] }}</td><td><a href="{{ url_for('delete_student', id=student[0]) }}">删除</a></td></tr>{% endfor %}</table><h2>添加学生</h2><form action="{{ url_for('add_student') }}" method="post">姓名:<input type="text" name="name"><br>年龄:<input type="number" name="age"><br>班级:<input type="text" name="class"><br><input type="submit" value="添加"></form>
</body>
</html>

通过这个简单的例子,我们不仅学习了如何使用Python与MySQL进行交互,还了解了如何构建一个基础的数据库应用程序框架。希望这能为你进一步探索数据库管理和Python编程提供一个良好的起点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/13407.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python爬虫-批量爬取新能源汽车上牌量

前言 本文是该专栏的第27篇,后面会持续分享python爬虫干货知识,记得关注。 最近粉丝朋友咨询新能源汽车上牌量数据的爬取方法,对此在本文中,笔者以某汽车平台为例,通过python来实现对“新能源汽车上牌量”的数据进行抓取。 具体实现思路和详细逻辑,笔者将在正文结合完整…

三丰云搭建QQ-bot的服务器-代码实现(3)

网址&#xff1a;https://www.sanfengyun.com >> 三丰云免费云服务器 代码实现 书接上回装饰器&#xff0c;显而易见&#xff0c;只有装饰器还不完善&#xff0c;所以我们接着来补充代码 首先定义一个 MyClient 类 class MyClient(botpy.Client):async def on_ready(…

Nacos :安装配置、服务注册

目录 一、中文官网 二、配置 1、application.properties 2、启动 Nacos 服务 3、访问 Nacos 三、服务注册 1、配置Nacos客户端的pom依赖 2、添加服务配置信息 3、添加 Nacos 启动注解 一、中文官网 Nacos官网 | Nacos 官方社区 | Nacos 下载 | Nacos 下载后直接解压…

0X JavaSE-- ( 遍历-- for each、Iterator 、)、

for each for each 语句是 JDK5 的新特征&#xff0c;主要用于遍历数组、集合。 // collection 可以是数组/实现了 Iterable 接口的集合类 for(dataType variable : collection){ // 使用 item 进行操作 } // 遍历二维数组// 初始化一个二维数组int[][] array {{1, 2, 3},{4…

GO语言核心30讲 实战与应用 (io包,bufio包,os包,网络服务,http,性能分析)

原站地址&#xff1a;Go语言核心36讲_Golang_Go语言-极客时间 一、io包中的接口和工具 1. strings.Builder、strings.Reader 和 bytes.Buffer 这些类型实现了 io 包的很多接口&#xff0c;目的是什么&#xff1f; 是为了提高不同程序实体之间的互操作性。 程序实体是指比如网…

浏览器插件Video Speed Controller(视频倍速播放),与网页自身快捷键冲突/重复/叠加的解决办法

浏览器插件Video Speed Controller&#xff08;视频倍速播放&#xff09;&#xff0c;与网站自身快捷键冲突/重复/叠加的解决办法 插件介绍问题曾今尝试的办法今日发现插件列表中打开Video Speed Controller的设置设置页面翻到下面&#xff0c;打开实验性功能。将需要屏蔽的原网…

网络工程师----第三十一天

DNS&#xff1a; DNS含义&#xff1a;DNS 是 Domain Name System&#xff08;域名解析系统&#xff09; 端口号&#xff1a;DNS为53&#xff08;UDP&#xff09; 域名的层次结构&#xff1a; 域名的分级&#xff1a; 域名服务器&#xff1a; 域名解析过程&#xff1a; 递归查…

PHP xdebug

使用场景 一台MAC上安装了phpstorm&#xff0c;虚拟机安装了对应的web程序&#xff0c;需要调试。 坑点&#xff0c;网上教程太多&#xff0c;不如看官网&#xff0c;需要按照xdebug版本来配置php.ini https://www.jetbrains.com/help/phpstorm/2023.3/configuring-xdebug.htm…

【Java】HOT100+代码随想录 动态规划(上)背包问题

目录 理论基础 一、基础题目 LeetCode509&#xff1a;斐波那契数 LeetCode70&#xff1a;爬楼梯 LeetCode746&#xff1a;使用最小花费爬楼梯 LeetCode62&#xff1a;不同路径 LeetCode63&#xff1a;不同路径ii LeetCode343&#xff1a;整数拆分 LeetCode96&#xff1a;不…

vue uniapp 小程序 判断日期是今天(显示时分秒)、昨天、本周的周几、超出本周显示年月日

效果图&#xff1a; util.js /*** 转换时间*/ const messageFormat (datetime) >{ let result "";let currentTime new Date();if(isToday(datetime)){result datetime.substring(11,16);}else if(isYesterday(datetime)){result "昨天";}else if(…

分层解耦-三层架构

分层解耦-三层架构 Controller&#xff1a;控制层&#xff0c;接收前端发送的请求&#xff0c;对请求进行处理&#xff0c;并响应数据 service&#xff1a;业务逻辑层&#xff0c;处理具体的业务逻辑 dao&#xff1a;数据访问层&#xff08;持久层&#xff09;&#xff0c;负…

python爬虫[简易版]

python爬数据[简易版] 对于每个网站的爬的原理基本是一样的,但是具体的代码写法的区别就在于爬的数据中解析出想要的数据格式: 以爬取有道词典中的图片为例: 第一步:打开网站,分析图片的数据源来自哪里, https://dict-subsidiary.youdao.com/home/content?invalid&pre…

操作系统磁盘管理类问题

例题&#xff1a;在磁盘上存储数据的排列方式会影响1/0服务的总时间。假设每个磁道被划分成10个物理块&#xff0c;每个物理块存放1个逻辑记录。逻辑记录R1,R2....R10存放在同一个磁道上&#xff0c;记录的排列顺序如下表所示&#xff1a; 假定磁盘的旋转速度为10ms/周&#xf…

VMware虚拟机-安装程序无法自动安装virtual machine......_windows server 2008 R2

系统版本&#xff1a;windows server 2008 R2 问题-安装程序无法自动安装virtual machine… 在使用虚拟机安装windows server 2008 R2系统中&#xff0c;安装VMware Tools工具安祖啊寄给你失败&#xff0c;提示安装程序无法自动安装virtual machine…&#xff0c;必须手动安装…

从源头到洞察:大数据时代的数据提取与分析实战指南

随着科技的飞速发展&#xff0c;大数据已经成为现代社会的核心驱动力之一。从商业决策到科学研究&#xff0c;从政策制定到个人生活&#xff0c;数据无处不在&#xff0c;影响着我们的每一个决策。然而&#xff0c;如何从海量的数据中提取有价值的信息&#xff0c;并转化为深刻…

List类

什么是 List 在集合框架中&#xff0c; List 是一个接口&#xff0c;继承自 Collection 。 Collection 也是一个接口 &#xff0c;该接口中规范了后序容器中常用的一些方法&#xff0c;具体如下所示&#xff1a; List 中提供了好的方法&#xff0c;具体如下&#xff1a; List…

Conda 常用命令大全

Conda 常用命令大全 配置源conda配置清华源pip配置清华源pip配置阿里源 环境管理创建一个新的虚拟环境列出虚拟环境激活虚拟环境退出虚拟环境删除虚拟环境复制某个虚拟环境 conda包管理列出全部包安装包卸载包 pip包管理列出全部包安装包卸载包 其他命令查询 conda 版本查看环境…

python发票真伪查验开发文档、票据OCR、数电票查验

想象一下&#xff0c;只需一行行简洁的代码&#xff0c;复杂繁琐的发票审核工作瞬间变得井然有序。翔云发票查验开发文档详尽易懂&#xff0c;即便是Python新手也能迅速上手&#xff0c;搭建起自己的发票真伪查验系统。无论是纸质发票的扫描图像&#xff0c;还是电子发票的数据…

C语言详解:数组指针

数组指针是指针 int* p[10] 这是指针数组的写法 &#xff0c;因为【】的优先级比*高&#xff0c; 所以为了解决优先级问题&#xff0c;加&#xff08;&#xff09; int(* p)[10]&arr;//数组的地址要存起来 说明p是指针&#xff08;首先与*结合&#xff09;&#xff0c…

哈希表法快速求解最长连续序列 | 力扣128题详细解析

❤️❤️❤️ 欢迎来到我的博客。希望您能在这里找到既有价值又有趣的内容&#xff0c;和我一起探索、学习和成长。欢迎评论区畅所欲言、享受知识的乐趣&#xff01; 推荐&#xff1a;数据分析螺丝钉的首页 格物致知 终身学习 期待您的关注 导航&#xff1a; LeetCode解锁100…