Flask 数据库-单表操作

Flask-SQLAlchemy

Flask-SQLAlchemy是在Flask中操作关系型数据库的拓展。是以面向模型对象的形式操作数据库,通过迁移完成建表

安装

pip install flask-sqlalchemy

基本配置

  • 第一种
from flask_sqlalchemy import SQLAlchemy
# 配置数据库访问链接
app.config['SQLALCHEMY_DATABASE_URI']="mysql://root:mysql@127.0.0.1:3306/demo"
# 设置是否追踪数据库的增删改查,会有显著的开销,一般设置为False
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = Flase
# 创建SQLAlchemy对象,,并与当前数据库关联,TCP连接
db = SQLAlchemy(app)
  • 第二种
from flask_sqlalchemy import SQLAlchemy

class Config(object):
    DEBUG = True
    SQLALCHEMY_DATABASE_URI = "mysql://root:mysql@127.0.0.1:3306/demo1"
    SQLALCHEMY_TRACK_MODIFICATIONS = False


app = Flask(__name__)
app.config.from_object(Config)

注意,如果要实现以下操作,请先执行以上步骤,实现数据库的连接

定义模型类

class User(db.Model):
    # 定义表名
    __tablename__ = "user"
    # 定义id为主键,必须设置id,并且必须设置成主键(primary_key)
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(128))
    author = db.Column(db.Integer)

实现建表

if __name__ == '__main__':
    # 删除表:没有实际意义,在学习的时候,可以保证每次的数据都是新的
    # db.drop_all()
    # 建表:会将继承自db.Model的类在数据库中映射出一张表
    db.create_all()
    app.run(debug=True, port=8888)

增删改查

user = User(name = "lisi")

或者

user = User()
user.name = "lisi"
  • 然后添加提交
db.session.add(user) 
db.session.commit()

  res = Book.query.filter(Book.id ==2).first()

或者

	res=User.query.first()
  • 然后删除提交
  db.session.delete(res)
  db.session.commit()

user=User.query.first()
user.name='xuzhixiang'
db.session.commit()

或者

user = User().query.filter_by(id=4).first()
user.name = '二狗'
db.session.commit()

user = User().query.filter_by(id=4).first()
print(user.name)
  • 语法:
  • 模型类名.query.过滤器.查询执⾏行行器器

过滤器

返回BaseQuery类型对象 并不是最终的数据 最终的数据由 查询执行器获取

filert()  按照条件查找

比如:

User.quer.filter(User.name = “lisi”)

filter_by()  按照条件精确查找

比如:

User.query.filter_by(id=1)

查询执行器

  • 返回最终的结果
all ( )返回查询到的所有结果,是一个列表, User.query.filter(User.name != ‘wang’).all()
first ( )返回查询的第一个结果,User.query.filter(User.name != ‘wang’).first()
get ( )返回主键对应的行, User.query.get(1)
count ( )返回查询结果的数量 User.query.count()
paginate ( )参数分别对应的是要查询的是第几页,每页几条数据,如果有错是否输出。 User.query.paginate(2, 3, False),这个例子是,每页三条数据,查询第二页的数据

排序

order_by()

例子:

  • 正序

User.query.order_by(User.name)

  • 倒序

User.query.order_by(User.name.desc())

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值