flask 操作数据库,写入一条数据
当 flask 基本环境运行起来之后,就要考虑数据入库相关内容了,本篇博客会将 flask 与 mysql 实现对接,完成一个入库操作。
首先依旧是安装模块,flask 就是这点比较好,可扩展性特别强。
pip install flask-sqlalchemy pymysql
其中 flask-sqlalchemy
是一套ORM框架,在它的帮助下,可以让我们像操作数据对象一样操作数据库表数据。
除了这些以外,你还要在电脑上安装 MySQL 数据库,最好在安装一个 navcat 用于操作它。
测试一把数据库链接吧
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import pymysql
pymysql.install_as_MySQLdb()
app = Flask(__name__)
class Config(object):
user = 'root'
password = 'root'
database = 'xiangpica'
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://%s:%s@127.0.0.1:3306/%s' % (user, password, database)
SQLALCHEMY_TRACK_MODIFICATIONS = True
app.config['SQLALCHEMY_ECHO'] = True
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = False
app.config.from_object(Config)
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):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
name = db.Column(db.String(64), unique=True)
在创建好的数据表中插入数据,只需要执行下述代码即可。
if __name__ == '__main__':
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)
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 篇。
可以关注我,点赞我、评论我、收藏我啦。
更多精彩
👇👇👇扫码加入【78技术人】~ Python 事业部👇👇👇
Original: https://blog.csdn.net/hihell/article/details/123135177
Author: 梦想橡皮擦
Title: 3天掌握Flask开发项目系列博客之二,操作数据库
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/749054/
转载文章受原作者版权保护。转载请注明原作者出处!