在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 进阶篇