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.pswp.cn/diannao/13407.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/13407.shtml
英文地址,請注明出處:http://en.pswp.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…