Flask数据库基本操作-SQLAlchemy

Flask数据库
D:使用扩展包flask-sqlalchemy来操作数据库(增删改查)
E:通过 Python 对象来操作数据库,在舍弃一些性能开销的同时,换来的是开发效率的较大提升
U:常用的SQLAlchemy字段类型
在这里插入图片描述
常用的SQLAlchemy列选项
在这里插入图片描述
常用的SQLAlchemy关系选项
在这里插入图片描述
①安装扩展包及导包
安装flask-sqlalchemy:pip install flask-sqlalchemy
如果连接的是mysql数据,需安装mysqldb:pip install flask-sqlalchemy
导包:from flask_sqlalchemy import SQLAlchemy
②配置相关数据库的设置

#数据库信息设置
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:[email protected]:3306/数据库名'
# 动态追踪修改设置,如未设置只会提示警告,极大影响mysql性能app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

③创建连接数据库的对象

db = SQLAlchemy(app)

④定义模型类,继承db.Model
定义数据库的表名: tablename
设置字段: 字段=db.Column(db.字段类型,字段选项)
例如:id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(64), unique=True)
设置关联属性: books = db.relationship(‘Book’, backref=‘author’, lazy=‘dynamic’)
给该模型类添加一个属性,第一个参数为多类类名,通过这个属性可以查询一对多所有对象
第二个参数backref =’该类类名小写‘,是反向给多类申明一个新属性
第三个参数指定是lazy属性,即何时加载数据,dynamic指的是在访问属性的时候,并没有在内存中加载数据,而是返回一个query对象, 需要执行相应方法才可以获取对象,比如.all()

⑤无迁移式的建表和删表
db.drop_all() 删除该数据库所有的表 db.create_all() 在该数据库下创建所有模型类映射的表

增删改查
增:①创建对象: b =Book(name=‘图书’)
②把数据添加到用户会话:db.session.add(b)
如果多个对象,使用db.session.add_all([b1,b2,b3])
③提交用户会话到数据库: db.session.commit()
删:第一种方式:
①查出该对象: b=Book.query.get(1)
②从用户会话删除该对对象: db.session.delete(b)
③提交用户会话: db.session.commit()
第二种方式:
①查出对象直接删除: Book.query.get(1).delete()
②提交用户会话: db.session.commit()
改:①查出该对象: b=Book.query.get(1)
②修改对象属性: b.name=‘小说’
③提交用户会话: db.session.commit()
查:①无条件查询:Book.query.查询执行器
②条件查询:Book.query.过滤器.查询执行器
常用过滤器如下:
在这里插入图片描述
常用查询执行器如下:
在这里插入图片描述

逻辑非,逻辑与,逻辑或
from sqlalchemy import not_,and_,or_
示例:User.query.filter(not_(User.name==‘chen’)).all()
User.query.filter(and_(User.name!=‘wang’,User.email.endswith(‘163.com’))).all()

一对多,多对一关联查询
一对多
①先查询出一类对象,例如author=Author.query.get(1)
②根据我们设置的relationship属性获取这一类对象下的全部多类对象:
books=author.books (即该作者下全部书籍)
多对一:
①查询出多类对象,例如book=Book.query.get(2)
②根据我们设置的backref反向设置的属性获取该多类对象对应的一类对象:
author =book.author (即这本书所属的作者)

flask数据库迁移
D:在数据库中建立模型类映射的数据库表,如果需要修改数据库模型,还要在修改之后更新数据库,最好的解决的方法使用数据库迁移框架Flask-Migrate
E:建立相关数据库表,而且追踪数据库模式的变化,然后把变动应用到数据库中,还可以回退版本。
U:迁移步骤:
①安装扩展包:迁移扩展包:pip install flask-migrate,脚本管理器包:pip install flask-script
②导包:from flask_migrate import Migrate,MigrateCommand from flask_script import Shell,Manager
③创建脚本管理器:manager= Manager(app)
④迁移关联应用和数据库:Migrate(app,db)
⑤添加迁移命令道脚本管理器:manager.add_command(‘db’,MigrateCommand)
⑥使用脚本命令在命令行进行迁移操作:
在这里插入图片描述

发布了22 篇原创文章 · 获赞 11 · 访问量 4万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章