flasqlalchemy
数据库相关配置:
- 引入相关模块
from flask_sqlalchemy import SQLAlchemy
- 创建数据库实例
db = SQLAlchemy(app)
- 配置数据库相关信息
#数据库地址用户名及密码以及数据库名称
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:root@127.0.0.1/flask_sql_demo'
#动态追踪修改设置未设置只会提示警告不建议开启
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
- 创建数据库模型
#操作数据库模型须继承自db.Model
class Role(db.Model):
#定义表名
__tablename__ = 'roles'
#定义字段名
id = db.Column(db.Integer,primary_key=True)
name = db.Column(db.String(16),unique=True)
class User(db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer,primary_key=True)
name = db.Column(db.String(16), unique=True)
role_id = db.Column(db.Integer,db.ForeignKey('roles.id'))
- 表操作
增删改
#增
role = Role(name = 'admin')
db.session.add(role)
db.session.commit()
##同时添加多条数据
role1 = Role(name = 'admin')
role2 = Role(name = 'user1')
role3 = Role(name = 'user2')
db.session.add_all([role1,role2,role3])
db.session.commit()
#删
db.session.delete(role)
db.session.commit
#改
role.name = 'chengxuyuan'
db.session.commit
简单查询
常用的SQLAlchemy查询过滤器
过滤器 | 说明 |
---|---|
filter() | 把过滤器添加到原查询上,返回一个新查询 |
filter_by() | 把等值过滤器添加到原查询上,返回一个新查询 |
limit | 使用指定的值限定原查询返回的结果 |
offset() | 偏移原查询返回的结果,返回一个新查询 |
order_by() | 根据指定条件对原查询结果进行排序,返回一个新查询 |
group_by() | 根据指定条件对原查询结果进行分组,返回一个新查询 |
常用的SQLAlchemy查询执行器
方法 | 说明 |
---|---|
all() | 以列表形式返回查询的所有结果 |
first() | 返回查询的第一个结果,如果未查到返回None |
first_or_404() | 返回查询的第一个结果,如果未查到返回404 |
get() | 返回指定主键对应的行,如果不存在返回None |
get_or_404() | 返回指定主键对应的行,如果不存在返回404 |
count() | 返回查询结果的数量 |
paginate() | 返回一个paginate对象,它包含指定范围内的结果 |
查询所有用户数据
User.query.all()
查询有多少个用户
User.query.count()
查询第一个用户
User.query.first()
查询id为4的用户
1.User.query.get(4)
2.User.query.filter_by(id=4)
3.User.query.filter(User.id == 4)
filter()与filter_by()的区别
filter():对象.属性 == 值
filter_by():属性 = 值
filter()功能更加强大,可以实现更多的一些查询,支持比较运算符