Flask-sqlalchemy 语法总结
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Flask-sqlalchemy 语法总结,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2681字,纯文字阅读大概需要4分钟。
内容图文
![Flask-sqlalchemy 语法总结](/upload/InfoBanner/zyjiaocheng/497/8c551bfaf3704c44ae551c3e070fecdc.jpg)
db.create_all() :创建实体表
db.drop_all(): 删除表
1)插入表
Db.session.add(user) #user是实体对象
##批量插入
Db.session.add_all([user1,user2,user3,…..])
##提交
Db.session.commit()
2) 修改表
如果实体有id,那么就会变成更新操作,如果没有就是默认插入操作
User.name=’xiaobing’
Db.session.add(user)
Db.session.commit()
3)删除行
Db.session.delete(user)
Db.session.commit()
2,查询
1)filter_by,filter
User.query.filter_by(role=user_role).all()
user_role = Role.query.filter_by(name=‘User‘).first()
filter_by是直接根据实体对象去转化sql,filter是比较直接插入到sql中
常用的SQLALchemy查询过滤器
过滤器 说明:
* filter() 把过滤器添加到原查询上
* filter_by() 把等值过滤器添加到原查询上
* limit() 限制原查询返回的结果数量
* offset() 偏移原始查询返回的结果
* order_by() 根据指定条件对原查询进行排序
* group_by() 根据指定条件对原查询结果进行分组
在users = db.relationship(‘User‘, backref=‘role‘, lazy=‘dynamic‘) 加入了lazy=’dynamic’参数,从而禁止自动执行查询,user_role.users会返回一个尚未执行的查询,因此可以在其上添加过滤器
user_role.users.order_by(User.username).all()
最常用的SQLALCHEMY列选项
选项名 说明
primary_key 主键
unique 是否允许重复值
index 设为True,为这一 列建立索引
nullable 设为True,允许使用空
default 默认值
2)like 模糊匹配
例如:
categorys = Category.query.filter(Category.name.like("%"+keyword+"%")).all()
这种好像也可以
hosts.query.whoosh_search(‘ce‘).all()
3)连表查询
class Topic(db.Models): __tablename__ = ‘topic‘ id = db.Column(db.Integer, primary_key = True) content = db.Column(db.Text) class Reply(db.Models): __tablename = ‘reply‘ id = db.Column(db.Integer, primary_key = True) topic_id = db.Column(db.Integer) content = db.Column(db.Text)
查询:
result=Reply.query.join(Topic, Reply.topic_id==Topic.id).add_entity(Topic).all()
然后遍历值:
for res in result: res.Reply.xxx res.Topic.xxx
4)查询返回指定的字段
User.query(User.name,User.email,User.sex).order(User.name.des()).limit(20).skip(200)
5)group by 分组查询
第一种方式:
rs =User.query(StudentInfo.cls, func.sum(StudentInfo.cert_count)).group_by(StudentInfo.cls).all()
第二种方式:
Create_engine=SQLAlchemy.get_engine() sql = ‘select cls, sum(cert_count) from stuinfo group by cls‘ rs = engine.execute(sql) for row in rs: print row[0], row[1]
6) 分页显示paginate
pagination = Post.query.order_by(Post.timestamp.desc()).paginate(page,per_page=current_app.config[‘ARTISAN_POSTS_PER_PAGE‘],error_out=False)
返回的pagination对象 包含以下:
Page:当前页
Page_per:每页显示多少条
Total:总条数
Flask-sqlalchemy 语法总结
标签:_id 插入 cer post error 默认值 lazy pre sql
本文系统来源:https://www.cnblogs.com/minsons/p/8193514.html
内容总结
以上是互联网集市为您收集整理的Flask-sqlalchemy 语法总结全部内容,希望文章能够帮你解决Flask-sqlalchemy 语法总结所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。