欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

3天掌握Flask开发项目系列博客之二,操作数据库

时间:2023-04-28
flask 操作数据库,写入一条数据

当 flask 基本环境运行起来之后,就要考虑数据入库相关内容了,本篇博客会将 flask 与 mysql 实现对接,完成一个入库操作。
首先依旧是安装模块,flask 就是这点比较好,可扩展性特别强。

pip install flask-sqlalchemy pymysql

其中 flask-sqlalchemy 是一套ORM框架,在它的帮助下,可以让我们像操作数据对象一样操作数据库表数据。

除了这些以外,你还要在电脑上安装 MySQL 数据库,最好在安装一个 navcat 用于操作它。

测试一把数据库链接吧

from flask import Flaskfrom flask_sqlalchemy import SQLAlchemyimport pymysqlpymysql.install_as_MySQLdb() # 参照 mysqldb 模块使用app = Flask(__name__)class Config(object): # 设置连接数据库的URL user = 'root' password = 'root' database = 'xiangpica' app.config['SQLALCHEMY_DATAbase_URI'] = 'mysql://%s:%s@127.0.0.1:3306/%s' % (user, password, database) # 设置sqlalchemy自动跟踪数据库 SQLALCHEMY_TRACK_MODIFICATIONS = True # 显示原始SQL语句 app.config['SQLALCHEMY_ECHO'] = True # 禁止自动提交数据处理 app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = False# 读取配置app.config.from_object(Config)# 创建数据库sqlalchemy工具对象db = SQLAlchemy(app)class User(db.Model): # 定义表名 __tablename__ = 'users' # 定义字段 id = db.Column(db.Integer, primary_key=True, autoincrement=True) name = db.Column(db.String(64), unique=True)if __name__ == '__main__': # 创建所有表 db.create_all()

上述代码核心完成的就是 flask 创建 users 表的操作,其中重要步骤已经添加了注释,在临摹代码的时候,重点注意 app.config.from_object(Config) 读取配置操作以及实例化 db = SQLAlchemy(app) ,即 db对象 的操作。

使用 navcat 等数据库连接工具,可以查询表结构和表数据。

其中关于 db 的属性和方法,这部分内容资料非常多,稍微查一下即可掌握

class User(db.Model): # 继承 db.Model # 定义表名 __tablename__ = 'users' # 定义字段 id = db.Column(db.Integer, primary_key=True, autoincrement=True) # db.Column 字段名称设定 name = db.Column(db.String(64), unique=True)

在创建好的数据表中插入数据,只需要执行下述代码即可。

if __name__ == '__main__': # 创建所有表 # db.create_all() # 添加数据 user = User(name="admin") db.session.add_all([user]) db.session.commit() # 提交数据

查询某个表中的所有数据

users = User.query.all()print(users)# 输出 [, ]

查询指定ID的数据

user1 = User.query.get(1)print(user1)# 输出

筛选指定数据

User.query.filter(User.name == 'wwww').first()# 输出

删除与修改都是查询到数据,然后做更正提交

user1 = User.query.filter(User.name == 'wwww').first()print(user1)# 更新user1.name = '橡皮擦'db.session.commit()# 删除user1 = User.query.filter(User.name == '橡皮擦').first()print(user1)# user1.name = '橡皮擦'db.session.delete(user1)db.session.commit()

备注一份常用的数据查询过滤器,以下函数都会返回一个新的查询对象

filter():追加过滤器;filter_by():追加等值过滤器;limit():返回指定数量的结果;offset(): 偏移原查询返回的结果;order_by():对查询对象结果进行排序;group_by():对查询对象进行分组。

SQLAlchemy查询执行器:

all():列表格式所有结果;first(): 返回查询的第1个结果,无数据返回None;first_or_404(): 返回查询的第1个结果,无数据返回404;get(): 返回指定主键对应的行,无数据返回None;get_or_404():返回指定主键对应的行,无数据返回404;count(): 返回查询结果的个数;paginate():返回包含指定范围内的结果Paginate对象。

除此之外,还需要掌握过滤器中的筛选条件,例如 _and , _or() , _not() 等内容。

记录时间

2022年度 Flag,写作的 573 / 1024 篇。
可以关注我,点赞我、评论我、收藏我啦。

更多精彩

Python 爬虫 100 例教程导航帖(连续 3 年,不断更!)Python爬虫120 (39.9 元,保 5 年更新)


扫码加入【78技术人】~ Python 事业部

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。