Y21
以简单的年级表格模型为例,介绍数据库的增删改查,条件查询等操作
代码,以下:
from app import db
# 定义数据模型, 设置表格中各个字段的数据类型
class Grade(db.Model):
g_id = db.Column(db.Integer,primary_key=True,autoincrement=True)
g_name = db.Column(db.String(30),nullable=False, unique=True)
g_num = db.Column(db.Integer, nullable=True)
__tablename__ = 'grade'
def __init__(self, name, num):
self.g_name = name
self.g_num = num
# 生成表格
db.create_all()
# 数据添加
grade1 = Grade('py5',38)
grade2 = Grade('py6',28)
# session:是一块临时存储区域, 用来暂存数据库操作的数据, 最终通过commit统一提交给数据库.
# db.session.add(grade1)
# db.session.add(grade2)
# db.session.commit()
# 数据查询(查询所有数据)
# result = Grade.query.all()
# for item in result:
# print(item.g_name, item.g_num, item.g_id)
# 按照主键值查询
# result = Grade.query.get(1)
# print(result)
# 按条件查询, filter()设置对应的过滤条件, 完成数据的过滤操作
# result = Grade.query.filter(Grade.g_num > 20).all()
# print(result)
# 数据库分页查询, paginate(参数1, 参数2, 参数3), 参数1代表查询的页码, 页码值从1开始; 参数2代表每一页查询的总数据条数; 参数3是布尔类型,用来设定当查询超出范围时, 以何种方式返回结果, 默认为True, 以404错误信息返回, 如果为False此时以空列表形式返回.
# result = Grade.query.paginate(2, 5, False)
# print(result.items)
# 获取查询结果的总数量
# count = Grade.query.count()
# 按条件查询所有满足的结果的个数
# count = Grade.query.filter(Grade.g_num > 30).count()
# print(count)
# 从查询结果中提取指定数量的数据(利用列表'切片'提取需要的对象)
# result = Grade.query.filter(Grade.g_num > 30).all()[1:3]
# print(result)
# 多条件查询语句 startswith:以指定字符开头
# result = Grade.query.filter(Grade.g_name.startswith('py'),Grade.g_num > 30).all()
from sqlalchemy import *
"""
sqlalchemy模块内置的查询条件
and_(): 并且
or_(): 或者
not_(): 非, 条件只能一个
"""
# result = Grade.query.filter(and_(Grade.g_name.startswith('py'),Grade.g_num > 30)).all()
# result = Grade.query.filter(not_(Grade.g_num > 30)).all()
# print(result)
# 数据库的删除 先查询再删除
# grades = Grade.query.filter(Grade.g_id > 9).all()
# for item in grades:
# db.session.delete(item)
# db.session.commit()
# 数据修改 查询后修改
# grade_1 = Grade.query.filter(Grade.g_num > 30).first()
# grade_1.g_num = 25
# db.session.commit()
个人小结,定有不足,欢迎指点。
谢谢~