SQLAIchemy对数据基本操作


title: SQLAlchemy对数据基本操作 date: 2017-08-07 15:31:07 tags: [flask,SQLAlchemy,开发]

先前在这篇文章有些创建操作介绍 Mysql安装和操作(flask)

以下为读《深入理解Flask》

对各种数据储存策略有四种基本功能类型:添加,读取,修改,删除

增加数据

读取数据

读取数据也许是操作种类比较复杂的功能类型

一个简单的例子

>>> users=User.query.all()
>>> users
['test'>]
复制代码

一些常用语句(可以链式调用)

User.query.all ##查询User模型在数据库中所有行
User.query.h2mit(5).all ##指定行数返回
User.query.first() ##返回一行数据
User.query.filter(User.id == 2).first().name
User.query.get(2).name ##以主键获取,等效于上句
Post.query.paginate(2,10) ##返回2-10的对象,这个设计为了分页
User.query.filter_by(username="test").all() ##精确过滤
User.query.filter(User.id>1).all() ##user.id大于1的
##filter参数接受任何python表达式
User.query.order_by(User.username).all() ##正向排序
User.query.order_by(User.username.desc()).all() ##反向排序
##order_by控制排序方式
复制代码

paginate-Add:假如命令page=Post.query.paginate(2,10)

page.items ##返回这一页包含数据
page.page ##页数
page.pages ##总页数
page.has_prev OR page.has_next ##上一页或者下一页是否有数据
复制代码

filter-Add: 一些复杂的SQL语句也可以转化

User.query.filter(
		User.username.in_(['test','test1']),
		User.password_hash==None
	).first()
User.query.filter(
		not_(User.password_hash==None)
	).first() ##拥有密码的user
User.query.filter(
		or_(not_(User.password_hash==None),User.id>1)
	).first() ##组合调用
复制代码

SQLAlchemy中与None的比较会被当成与NULL比较

修改数据

调用update方法更新数据

>>> User.query.filter_by(username="test").update({
	'password_hash':'test'
	})
1
>>> db.session.commit()
复制代码

删除数据

>>> user=User.query.filter_by(username="test").first()
>>> db.session.delete(user)
>>> db.session.commit()
复制代码

你可能感兴趣的:(SQLAIchemy对数据基本操作)