3天掌握Flask开发项目系列博客之二,操作数据库
“Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。”
flask 操作数据库,写入一条数据
当 flask 基本环境运行起来之后,就要考虑数据入库相关内容了,本篇博客会将 flask 与 mysql 实现对接,完成一个入库操作。 首先依旧是安装模块,flask 就是这点比较好,可扩展性特别强。
python
pip install flask-sqlalchemy pymysql
其中 flask-sqlalchemy
是一套 ORM 框架,在它的帮助下,可以让我们像操作数据对象一样操作数据库表数据。
除了这些以外,你还要在电脑上安装 MySQL 数据库,最好在安装一个 navcat 用于操作它。
测试一把数据库链接吧
```python from flask import Flask from flask_sqlalchemy import SQLAlchemy import pymysql
pymysql.install_as_MySQLdb() # 参照 mysqldb 模块使用 app = Flask(name)
class Config(object): # 设置连接数据库的URL user = 'root' password = 'root' database = 'xiangpica' app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://%s:%[email protected]: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
的属性和方法,这部分内容资料非常多,稍微查一下即可掌握
python
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)
在创建好的数据表中插入数据,只需要执行下述代码即可。
```python if name == 'main': # 创建所有表 # db.create_all() # 添加数据 user = User(name="admin")
db.session.add_all([user])
db.session.commit() # 提交数据
```
查询某个表中的所有数据
```python users = User.query.all() print(users)
输出 [, ]
```
查询指定 ID 的数据
```python user1 = User.query.get(1) print(user1)
输出
```
筛选指定数据
```python User.query.filter(User.name == 'wwww').first()
输出
```
删除与修改都是查询到数据,然后做更正提交
```python 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程序员,放弃selenium,试试年轻的Playwright如何?
- 09年的老电脑说想看一下CPU温度,作为Python工程师,怎能安装X大师?
- 如果你需要用Python搞个二维码,那应该收藏这篇博客
- 写给Python社群的第2课:Python逻辑语句,天天要写的 if 和 while
- 嗨,程序员,你知道高级工程师用的搜索引擎吗?
- 都2022年了,Python Web框架你不会只知道Django和Flask吧?
- 在座的Python爬虫工程师,你敢爬律师事务所站点吗?
- Python爬虫反爬,你应该从这篇博客开启,UA反爬,Cookie 特定参数反爬
- OpenGauss数据库在 CentOS 上的实践,配置篇
- 【Python技能树共建】动态渲染页面爬取
- 【Python技能树共建】Beautiful Soup
- 【首发字体反爬】猫X眼YingShi,我们又来欺负你了,用到了 OCR 识别技术
- 【首发】某易跟帖篇频道,接口溯源分析,反爬新技巧,必掌握一下
- 【首发】Python反爬,JS反爬串讲,从MAOX眼X开始,本文优先解决反爬参数 signKey
- 【首发】写Python爬虫,服务器返回数据加密了,套路解决法~,出版社,出版社
- 虎牙直播数据采集,为数据分析做储备,Python爬虫120例之第24例
- 我们的骄傲!非遗数据采集,来自官方的数据,Python爬虫无所不爬
- 3天掌握Flask开发项目系列博客之二,操作数据库
- 写给Python社群的第1课:初识Python,开篇知识点就选字符串吧~
- 升级【爸爸程序员】了?用Python给自己的宝贝下载200 绘本动画吧!