python web学习2-连接数据库

文章目录

  • 前言
  • 一、MySQL数据库
    • 1. 准备环境
    • 2. 基本语法
  • 二、代码展示
    • 1. 主程序app.py
    • 2. 连接数据库的代码 db.py
    • 3. templates文件中的代码
  • 三、运行结果
  • 四、总结


前言

之前学习了用flask进行简单的网页展示,并实现了简单的用户登录界面。接下来记录最近学习的flask连接mysql数据库,完善用户登录系统,加入注册查询用户信息的功能。
由于初次学习,所写的代码和展示的页面都比较简陋,各位大佬就看看图一乐,发现有错误之处请指出。我主要是记录所学历程,总结一下,日后好查漏补缺。


一、MySQL数据库

SQL,结构化查询语言,Structured Query Language。MySQL则是当前使用最广泛的开源关系型数据库,由于有免费的社区版,可供我们进行学习和部署。

1. 准备环境

下载mysql数据库和workbench,在workbench中新建一个数据库user_info,新建一个表user。
在这里插入图片描述

2. 基本语法

这次的学习主要用到了mysql的查询数据和增加数据的功能。注意如果用workbench可视化操作数据,需要先双击选中该数据库。接下来是这次用到的几个最基本的语句,当然还有很多其他的SQL语句,这些留着日后再说。

# 查询整个表中的数据,user是表名
select * from user;
# 插入或新增数据
insert into user (username, password) values ("zhangsan", "123456");
#查询特定字段的数据
select * from user where name = "zhangsan";

二、代码展示

主要有三大块,第一个是主程序代码app.py;第二个是连接数据库的代码db.py;最后是模板文件templates,里面有注册登录所用的hello.html和展示用户信息所用的user.html。

1. 主程序app.py

主程序中三个路由分别指向三个函数,分别实现注册,登录,用户信息查看。

# app.pyfrom flask import Flask, render_template, request, redirect
# 这里把数据库中的方法全部引入
from db import *
app = Flask(__name__)@app.route('/')
def home():return '

Home

'
# 注册函数 @app.route('/register', methods=['POST', 'GET']) def register():if request.method == 'POST':username = request.form['username']password = request.form['password']# write()是数据库中写入数据的函数write(username, password)return "

Success!

"
return render_template('hello.html')# 登录函数 @app.route('/login', methods=['POST', 'GET']) def login():if request.method == 'POST':username = request.form['username']password = request.form['password']# is_existed()是数据库中判断用户名或密码是否存在的函数if is_existed(username, password):return redirect('https://www.baidu.com')else:message = 'Incorrect username or password'return render_template('hello.html', message=message)return render_template('hello.html')# 显示用户信息的函数 @app.route('/user', methods=['POST','GET']) def show_user():# show()是展示用户信息的函数result = show()return render_template("user.html", datas=result)if __name__ == '__main__':app.run()

2. 连接数据库的代码 db.py

此处也有三个函数,同样对应注册,登录,信息展示,同时app.py通过import将这三个方法导入。

# db.py
import pymysql# conn = pymysql.connect("数据库地址", "用户名", "密码", "数据库名称")
conn = pymysql.connect("localhost", "root", "123456", "user_info")
# 直接conn.cursor()返回的是一个二元元组,加入参数"pymysql.cursors.DictCursor"可以返回一个字典形式类似[{},{},{}]
cur = conn.cursor(pymysql.cursors.DictCursor)# 注册相关的函数,将用户输入的用户名和密码写入数据库 
def write(username, password):sql = f"insert into user (username, password) values ('{username}', '{password}')"cur.execute(sql)conn.commit()# 登录相关的函数,判断用户名和密码是否存在
def is_existed(username, password):# 方法一:全部取出一次判断# sql = "select * from user"# cur.execute(sql)# result = cur.fetchall()# for row in result:#     if row[1] == username and row[2] == password:#         return True# return False# 方法二:边取出边判断sql = f"select * from user where username = '{username}' and password = '{password}'"cur.execute(sql)result = cur.fetchall()if len(result) == 0:return Falsereturn True# 展示用户信息的函数
def show():sql = "select * from user"cur.execute(sql)result = cur.fetchall()return result'''注:由于三个函数的操作可能是多次进行,每一个函数结束都不可关闭数据库,否则进行下一步就会报错。
但这样一直不关数据库会造成资源浪费,可以把连接数据库的语句写到函数内部,每次运行完关闭,下一次重新连接。
这样不知道怎么样,多次连接数据库是否会使效率变低,后期还需学习。'''

3. templates文件中的代码

这里是两个html页面的展示,分别是用来展示用户注册和登录的hello.html和显示用户信息的user.html。注册和登录页面本应该有所不同,但由于主要探讨方法的实现,我就没有加以区分。



<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Documenttitle>
head>
<body><div style="text-align: center;"><h1>某某网站h1><span style="color: #ff0000;">{% if message %} {{message}} {% endif %}span> <form method='post'>账号<input type="text" name="username" placeholder="username"/><br/>密码<input type="password" name="password" placeholder="password"/><br/><input type="submit" name="submit" value="提交"/><input type="reset" value="重置"/>form>div>
body>
html>

<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>用户信息title>
head>
<body><h1>用户信息详情h1><table border="1px"><tr><th>IDth><th>用户名th><th>密码th>tr>{% for i in datas %}<tr><td>{{i["id"]}}td><td>{{i["username"]}}td><td>{{i["password"]}}td>tr>{% endfor %}table> 
body>
html>

三、运行结果

启动程序app.py,地址栏输入http://127.0.0.1:5000/register,进入如下注册页面:
注册界面
首先数据库中是只有一条数据的:

在这里插入图片描述
注册一个lisi,密码123,点击提交。再次进入workbench:

在这里插入图片描述
lisi已被成功加入数据库中。同样的方法再添加几条:

在这里插入图片描述
可以看到目前一共四条数据。id部分有跳行是因为我之前删过一部分数据。接下来输入http://127.0.0.1:5000/login进行登录,测试均是可以的。如果输入账号或密码错误会报错。
输入http://127.0.0.1:5000/user,可以看到所有用户的信息:
在这里插入图片描述

四、总结

通过这次的学习,初步了解了mysql和flask的基本使用,但是正如之前所说,目前的成果还是很简陋的。后期还需深入学习。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部