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 Error

def create_connection():
    """创建数据库连接"""
    connection = None
    try:
        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 connection

def 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 = None
    try:
        cursor.execute(query)
        result = cursor.fetchall()
        return result
    except 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 MySQL

app = 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编程提供一个良好的起点。

  • 33
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值