好久不见,不知道大家有没有想我呢?(一定想了对吧我晓得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)
from flask_sqlalchemy import SQLAlchemy
相关介绍可看这篇博客:
https://www.jianshu.com/p/20593da77c04
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root@localhost:3306/flask_sql'
‘mysql://用户名:密码@主机名/ip地址:端口号/数据库名’
上述信息可以在Navicat里查看,如下图
①方法有两种:一是利用Navicat图形化界面构建,右击localhost选择新建数据库。注意:数据库名与要匹配;由于所存数据有中文字符,数据库地址字符集和排序规则都要选取utf8,如下图:
二是利用DDL语句创建数据库,如下图:
CREATE database flask_sql charset=utf8;
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字段类型
③注意repr()方法与str()方法的区别,可参考这篇博客:
https://blog.csdn.net/qq_39806003/article/details/84589292
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() 提交数据库的修改(包括增/删/改)
至此,我们就已经实现连接数据库并向其中写入数据的操作啦,下面让我们一起来验证一下吧!
①使用DDL查询语句查看
select * from students;
②使用Navicat查看表信息,如下图:
至此,我们就顺利完成本次操作啦,恭喜恭喜!有什么疑问欢迎下面留言或私信我噢!