单表操作

数据准备

from flask import Flask
from flask_sqlalchemy import SQLAlchemy class Config:
DEBUG = True
SQLALCHEMY_DATABASE_URI = "mysql://root:123456@127.0.0.1:3306/demo"
SQLALCHEMY_TRACK_MODIFICATIONS = False app = Flask(__name__)
app.config.from_object(Config)
db = SQLAlchemy(app) # 模型类 -》对一个表设计
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(64))
age = db.Column(db.Integer) @app.route("/", methods=["GET", "POST"])
def index():
return "成功!"
if __name__ == '__main__':
db.create_all()
app.run()

添加记录

 user = User(name="laowang", age=18)
db.session.add(user) # 逻辑添加
db.session.commit()

删除记录

 # res = User.query.filter_by(name="laowang").first()
# db.session.delete(res)
# db.session.commit()

修改记录

res = User.query.filter_by(id=3).first()
res.name="老色批"
db.session.commit()

查询记录

SQLAlchemy中关于查询分为两部分:一个是查询过滤器,一个是查询执行器。

常用的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对象,它包含指定范围内的结果

演示

@app.route("/select_book")
def select_book():
# 1.查询所有用户数据
# res = Books.query.all()
# 说明:因为这里不想条件筛选,所以不需要查询过滤器
#
# # 2.查询有多少个用户
# res = Books.query.count() # 3.查询第1个用户
res = Books.query.first() # # # 4.查询id为4的用户[3种方式]
# res = Books.query.get(1) # 使用这种方式,后面只需要填写id值
# res = Books.query.filter_by(id=4).first()
res = Books.query.filter(Books.id == 1).first()
"""
filter_by和filter的区别
格式:
filter_by: 属性=
filter: 对象.属性==
功能:
filter功能上更加强大,可以实现更多的查询方式,比如比较运算符
"""
print(res)
return "查询成功"

一对多表操作

代码准备:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy class Config:
DEBUG = True
SQLALCHEMY_DATABASE_URI = "mysql://root:123456@127.0.0.1:3306/demo"
SQLALCHEMY_TRACK_MODIFICATIONS = False app = Flask(__name__)
app.config.from_object(Config)
db = SQLAlchemy(app) class Publishers(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(64))
address = db.Column(db.String(64)) def _str_(self): # print显示内容做设置
return self.name def _repr__(self): # 对列表中显示内容做设置
return self.name class Book(db.Model):
id = db.Column(db.Integer,primary_key=True)
title = db.Column(db.String(64))
price =db.Column(db.Integer)
pub_id = db.Column(db.Integer,
db.ForeignKey("publishers.id")
)
def _str_(self): # print显示内容做设置
return self.title def _repr__(self): # 对列表中显示内容做设置
return self.title
@app.route('/',methods=["GET","POST"])
def hello_world():
return "成功"
if __name__ == '__main__':
db.create_all()
app.run()

添加数据

 books=Book(id=1,title="养鬼为祸",price=50,pub_id=1)
db.session.add(books) # 逻辑添加
db.session.commit()

删除数据

es = Book.query.filter(Book.id == 1).first()
db.session.delete(es)
db.session.commit()

修改数据

es =Book.query.filter_by(id=1).first()
es.title="西游记"
db.session.commit()

查找数据

es =Publishers.query.filter(Publishers.name == "南方出版社").first()
ls = Book.query.filter(Book.pub_id == es.id).all()
print(ls)

没毛病!

欢迎转载,但请写明出处,谢谢。

最新文章

  1. 配置IP地址
  2. Ques核心思想——CSS Namespace
  3. Codeforces Round #313 (Div. 2) D.Equivalent Strings (字符串)
  4. Android + eclipse +ADT安装完全教程
  5. Hibernate 异常 集锦
  6. javascript今生前世
  7. Java课程设计博客(团队)
  8. django 时区和系统(ubuntu)时区修改
  9. spring boot Websocket(使用笔记)
  10. 小白月赛13 小A的路径 (矩阵快速幂求距离为k的路径数)
  11. 去掉点击a标签时产生的虚线框
  12. OpenGL step by step 38 : Skeletal Animation with Assimp
  13. ansible系列2-常用命令
  14. [模板][P3377]左偏树
  15. Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/tx]
  16. Java设计模式——合成/聚合复用原则
  17. BZOJ1337: 最小圆覆盖
  18. OpenSUSE安装软件
  19. 2018/04/21 PHP 中的Session和Cookie知识总结
  20. 102. Linked List Cycle【medium】

热门文章

  1. 制造企业有可能自行开发ERP系统吗?
  2. SpringBoot课程学习(三)
  3. 无法创建“Sunlight.Silverlight.Dcs.Web.PartsSupplier”类型的常量值。此上下文仅支持基元类型或枚举类型问题
  4. Linux安装oracle 12C
  5. 18.MongDB系列之批量更新写入Python版
  6. JavaScript基础&实战(1)js的基本语法、标识符、数据类型
  7. LeetCode------找到所有数组中消失的数字(6)【数组】
  8. 齐博x1前台后台地址跳转的处理
  9. 恭喜磊哥喜提n+1
  10. CSS基础知识筑基