Flask—数据库_3

接着上次的定义模型。在models.py内写好Note模型后可以在控制台查看对应的建表语句:

 

设置URI后

执行

db.create_all()

成功建立了表note。sqlalchemy是不能建立库的,所以sqlalchemy库是我手动创建的。

数据库和表一旦建立后,之后对模型的改动不回自动作用到实际的表中。例如在创建好表后,再在模型中添加新的字段,这时再次调用create_all()并不会更新表的结构。要想让改动生效,最简单的办法是用db.drop_all()删除数据库和表,然后再调用create_all()创建。

执行

db.drop_all()

后删除了表,同样无法删除MySQL的数据库

 

数据库操作

数据库的主要操作是CRUD,也就是Create(创建)、Read(读取/查询)、Upaate(更新)、Delete(删除)。和增删改查一个意思。SQLAlchemy使用数据库会话来管理数据库操作,数据库会话也称为事务(transaction)。Flask-SQLAlchemy会自动创建会话,可以用db.session属性获取。

数据库的会话代表一个临时存储区,存储了我们对数据库做出的改动。我们可以利用add()方法添加新会话或者更新原有的会话。只有对数据库会话对象调用了commit()方法时,改动才会被提交。调用rollback()方法则会将添加到会话而没有提交的改动撤销。

 

Create

向数据库添加新记录可以分为三步:

  1. 实例化模型,作为一条记录
  2. 添加记录到会话
  3. 提交会话到数据库

 

例如向之前的数据库添加三条消息

 

 

 

Read

一个完整的查询遵循这个模式:

<模型类>.query.<过滤方法>.<查询方法>

比较常用的查询方法有

all()-----返回所有记录

first()-----返回第一条记录

get()-----返回指定id的记录

count()-----返回记录总数

 

通过过滤方法可以获得更精确的查询,而且过滤方法可以叠加使用。最基础的查询过滤器是filter(),用指定的规则来过滤记录。

查找body字段为remember THIS的记录。

也可以查看对应SQL语句

filter中还有其他常用操作符例如:

like

in

not in

and

或者叠加调用多个filter()

Note.query.filter(Note.body.like('%rem%')).filter(Note.id==1).all()

还有一种方法是使用and_(),需要自己import。

or

 

filter_by()和filter()类似,而且更加简便。

 

 

Update

赋值给模型类的字段属性就可以直接改变字段值,调用commit()方法提交会话就完成了更新。

 

 

Delete

删和增总是十分相似,只需要把add()方法替换成delete()方法。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值