在Flask中使用MySQL数据库

在Flask中使用MySQL数据库


前言

前面两章分别对mysql数据库进行了安装、flask的简单介绍,而本章将继续学习flask操作的mysql数据库。


一、mysql在flask开发中的作用

MySQL数据库在Flask开发中起到了存储、管理和检索数据的重要作用,使得应用程序能够有效地处理和展示数据。

1.1. 首先导入mysql数据库

在这里插入图片描述

1.2. 创建新的mysql数据库

在它的查询控制台console中实行如下语句(按ctrl+enter实行):

create database new_python_mysql;

1.3. mysql数据库建表

直接对mysql数据库右键单击新建,选择表格

在这里插入图片描述

1.4. 展示建表的语句

show create table python_mysql.user;

#结果:
CREATE TABLE `user` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(10) DEFAULT '',
  `sex` varchar(10) DEFAULT '',
  `age` int DEFAULT '0',
  `email` varchar(128) DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='user_table'

1.5. 在表中新增数据

#新增一条数据:
insert into python_mysql.user( name, sex, age,email) values ('xinxin','women',23,'xinxin@qq.com');

二、flask提交表单数据到mysql

2.1. 使用pymysql库

使用pymysql库可以在Python中连接和操作MySQL数据库。它提供了一系列的方法和函数,使得在Python中使用MySQL数据库变得更加方便和灵活。

import pprint
import pymysql
from pymysql import cursors

#连接mysql数据库
def conn_mysql():
    return pymysql.connect(
        host="localhost",
        port= 端口号, 
        user= "root",
        password= 你的密码,
        database= "python_mysql",
        charset= "utf8"
    )



#查询数据
def query_data(sql):
    conn = conn_mysql()
    try:
        cursor = conn.cursor(pymysql.cursors.DictCursor) #返回数据是字典形式,而不是数组
        cursor.execute(sql)
        return cursor.fetchall()
    finally:
        conn.close()



#更新数据:
def insert_or_update_data(sql):
    conn = conn_mysql()
    try:
        cursor = conn.cursor()
        cursor.execute(sql)
        conn.commit() #提交
    finally:
        conn.close()



#尝试执行
if __name__ == "__main__":
    sql = "insert user (name,sex,age,email) values ('xingshi','man',18,'xingshi@qq.com')"
    insert_or_update_data(sql)
    sql = "select * from user"
    datas = query_data(sql)
    pprint.pprint(datas)

2.2. 提交网页表单数据

@app.route("/show_add_user")
def show_add_user():
    return render_template("show_add_user.html")

show_add_user.html 文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>提交用户信息</title>
</head>
<body>
    <div>
        <h1>提交用户信息:</h1>
        <form action="/do_add_user" method="post">
            <table border="1">
                <tr>
                    <th>用户名</th>
                    <td><input type="text" name="name"></td>
                </tr>
                 <tr>
                    <th>性别</th>
                    <td><input type="text" name="sex"></td>
                </tr>
                 <tr>
                    <th>年龄</th>
                    <td><input type="text" name="age"></td>
                </tr>
                 <tr>
                    <th>邮箱</th>
                    <td><input type="text" name="email"></td>
                </tr>
                 <tr>
                    <th>提交</th>
                    <td><input type="submit" name="submit" value="提交"></td>
                </tr>
            </table>
        </form>
    </div>
</body>
</html>
@app.route("/do_add_user",methods = ["POST"])
def do_add_user():
    print(request.form)
    name = request.form.get("name")
    sex = request.form.get("sex")
    age = request.form.get("age")
    email = request.form.get("email")
    sql = f"""
        insert into user(name,sex,age,email) 
        values ('{name}','{sex}',{age},'{email}')
    """
    print(sql)
    db.insert_or_update_data(sql)
    return "success"

#展示用户列表
@app.route("/show_users")
def show_users():
    sql = "select id,name from user"
    datas = db.query_data(sql)
    return render_template("show_users.html",datas = datas)

#<tr>...</tr> 定义一行标签,一组行标签内可以建立多组由<td>或<th>标签所定义的单元格
#<th>...</th>定义表头单元格。表格中的文字将以粗体显示
#<td>...</td> 定义单元格标签

show_users.html 文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>查看用户列表</title>
</head>
<body>
    <h1>查看用户列表</h1>
    <form>
        <table border="1">
            <tr>
                <th>用户ID</th>
                <th>用户名称</th>
                <th>查看详情</th>
            </tr>
            {% for user in datas %}
                <tr>
                    <td>{{ user["id"]}}</td>
                    <td>{{ user["name"]}}</td>
                    <td><a href="/show_user/{{ user["id"]}}">查看详情</a></td>
                </tr>
            {% endfor %}

        </table>
    </form>
</body>
</html>
@app.route("/show_user/<user_id>")
def show_user(user_id):
    sql ="select * from user where id=" +user_id
    datas = db.query_data(sql)
    # print(datas)
    user = datas[0]
    # print(user)
    return render_template("show_user.html",user=user)

show_user.html 文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>查看单个用户信息</title>
</head>
<body>
    <h1>查看单个用户信息</h1>
    <form>
        <table border="1">
            <tr>
                <th>用户ID</th>
                <td>{{ user["id"] }}</td>
            </tr>
             <tr>
                <th>姓名</th>
                <td>{{ user["name"] }}</td>
            </tr>
             <tr>
                <th>年龄</th>
                <td>{{ user["age"] }}</td>
            </tr>
             <tr>
                <th>性别</th>
                <td>{{ user["sex"] }}</td>
            </tr>
             <tr>
                <th>邮箱</th>
                <td>{{ user["email"] }}</td>
            </tr>

        </table>
    </form>

</body>
</html>

初始提交用户信息界面:

在这里插入图片描述

提交一个用户的信息:

在这里插入图片描述

显示提交成功,说明数据成功提交到mysql数据库中

在这里插入图片描述

在这里插入图片描述

进入展示用户列表的界面

在这里插入图片描述

点进最后一个用户的信息页面:

在这里插入图片描述


总结

本章主要简单介绍了mysql在flask开发中作用,并简单的做了一个向数据库中提交用户信息的页面程序。

人间总有一两风,填我十万八千梦。

–2023-9-24 进阶篇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星石传说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值