Web服务器(Flask框架)连接MySQL数据库并写入数据详细教程

好久不见,不知道大家有没有想我呢?(一定想了对吧我晓得hhh)
今天给大家带来的是如何利用flask框架搭建的web服务器连接后端的数据库
准备好了吗?那我们就开始啦!

【写在前面】
在开始这一项任务前,你需要具备的条件:
①Flask框架下的web服务器已经搭建完毕
②学习过数据库相关的知识
③熟悉使用MySQL相关语句
(本次操作使用的是Navicat数据库管理工具
最最最重要的是,你有强烈的兴趣去学会它!!!

先放代码,之后我们详细讲解~

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

# 配置数据库的地址
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root@localhost:3306/flask_sql'

# 跟踪数据库的修改 --> 不建议开启 未来的版本中会移除
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

#查询时会显示原始SQL语句
# app.config['SQLALCHEMY_ECHO'] = True

# 创建数据库对象
db = SQLAlchemy(app)


# 学生
class Students(db.Model):
    # 定义表名
    __tablename__ = 'students'
    # 定义字段
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(16))
    stu_number = db.Column(db.String(32), unique=True)

 	# repr()方法显示一个可读字符串,实例返回的内容
    def __repr__(self):
        return '' % (self.name, self.id, self.stu_number)

def create_table():
	# 删除表
	db.drop_all()
	# 创建表
	db.create_all()
	
    stu1 = Students(name='小明', stu_number='1918101')
    stu2 = Students(name='小红', stu_number='1918102')
    stu3 = Students(name='小华', stu_number='1918103')
	db.session.add_all([stu1,stu2,stu3])
	db.session.commit()

# 建表函数
create_table()


@app.route('/')
def index():
    return 'Hello flask!'


if __name__ == '__main__':
    app.run(debug=True)

1.安装SQLAlchemy第三方库

from flask_sqlalchemy import SQLAlchemy

相关介绍可看这篇博客:
https://www.jianshu.com/p/20593da77c04

2.配置数据库地址

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root@localhost:3306/flask_sql'

‘mysql://用户名:密码@主机名/ip地址:端口号/数据库名’
上述信息可以在Navicat里查看,如下图
Web服务器(Flask框架)连接MySQL数据库并写入数据详细教程_第1张图片

3.新建数据库

①方法有两种:一是利用Navicat图形化界面构建,右击localhost选择新建数据库。注意:数据库名与要匹配;由于所存数据有中文字符,数据库地址字符集和排序规则都要选取utf8,如下图:
Web服务器(Flask框架)连接MySQL数据库并写入数据详细教程_第2张图片
二是利用DDL语句创建数据库,如下图:

CREATE database flask_sql charset=utf8;

Web服务器(Flask框架)连接MySQL数据库并写入数据详细教程_第3张图片

4.创建数据库对象及学生类

db = SQLAlchemy(app) # db为对象名,自拟
class Student(db.Model):
    # 定义表名
    __tablename__ = 'student'
    # 定义字段
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(16), unique=True)
    stu_number = db.Column(db.String(32), unique=True)

 	# repr()方法显示一个可读字符串,实例返回的内容
    def __repr__(self):
        return '' % (self.name, self.id, self.stu_number)

注意点:
①定义数据库表名: tablename = '表名’
②定义字段: 字段名 = db.Column(类型,完整性约束条件)
常用的SQLAlchemy字段类型
Web服务器(Flask框架)连接MySQL数据库并写入数据详细教程_第4张图片
③注意repr()方法与str()方法的区别,可参考这篇博客:
https://blog.csdn.net/qq_39806003/article/details/84589292

5.向数据库中存储数据完成建表

def create_table():
	# 删除表
	db.drop_all()
	# 创建表
	db.create_all()
	
	stu1 = Student(name='小明', stu_number=1918101)
	stu2= Student(name='小红', stu_number=1918102)
	stu3= Student(name='song', stu_number=1918103)
	db.session.add_all([stu1,stu2,stu3])
	db.session.commit()

先删除后建立表,使每次运行可以更新数据库中的数据
②由于引入SQLAlchemy库,使关系数据库的表结构可以映射到对象上,输入数据等同于定义并初始化一个个对象
在Flask-SQLAlchemy中,插入、修改、删除操作,均由数据库会话管理会话用db.session表示。在准备把数据写入数据库前,要先将数据添加到会话中然后调用 commit() 方法提交会话。
相关操作如下:

db.session.add(对象)    添加到数据库的session中
db.session.add_all([对象1, 对象2]) 添加多个信息到session中
db.session.delete(对象) 删除数据库(需跟上commit)
db.session.commit()     提交数据库的修改(包括增//)

至此,我们就已经实现连接数据库并向其中写入数据的操作啦,下面让我们一起来验证一下吧!

6.查询所建数据库的相关信息

①使用DDL查询语句查看

select * from students;

②使用Navicat查看表信息,如下图:
Web服务器(Flask框架)连接MySQL数据库并写入数据详细教程_第5张图片
至此,我们就顺利完成本次操作啦,恭喜恭喜!有什么疑问欢迎下面留言或私信我噢!

最后祝大家生活愉快,bug都会改!

你可能感兴趣的:(Web服务器搭建,mysql,数据库,python,flask)