热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:数据模型续

本文由编程笔记#小编为大家整理,主要介绍了数据模型续相关的知识,希望对你有一定的参考价值。#数据模型###
本文由编程笔记#小编为大家整理,主要介绍了数据模型续相关的知识,希望对你有一定的参考价值。



# 数据模型
### 模型关系
- 一对多(使用最多)
- 一:学生(Student)
- 添加反向引用
- 多:文章(Article)
- 添加外键关联
- 一对一
- 一:学生(Student)
- 添加反向引用(在一对多的基础上多添加属性:`uselist=False`)
- 一:详情(Profile)
- 添加外键关联
- 多对多
- 多:学生(Student)
- 需要添加反向引用
- 需要使用`secondary`指定中间关联表
- 设置反向查询数据的加载时机,需要使用:`db.backref`
- 多:课程(Course)
- 中间关联表:此表不需要用户维护
- 表名
- 关联外键
### 模型总结
- 等价查询
```python
@app.route(
/query/)
def query():
# students
= Student.query.all()
# 与上面的方式等价
students
= db.session.query(Student).all()
return ,.join(s.name for s in students)
```
- group_by:分组查询
```python
@app.route(
/group/)
def group():
from sqlalchemy import func
ret
= db.session.query(Student.id, func.count(Student.id)).group_by(Student.id).all()
print(ret)
return 分组查询
```
> 分组查询并统计。
- 指定字段查询
```python
@app.route(
/select/)
def
select():
# ret
= db.session.query(Student.id, Student.name).all()
ret
= Student.query.with_entities(Student.name).all()
print(ret)
return 指定字段查询
```
- 分页查询:paginate,项目中讲解。
- SQL日志:就是查看执行过的SQL语句
```python
from flask_sqlalchemy import get_debug_queries
# 记录SQL日志,以下3个配置必须满足一个
# 调试模式
# app.config[
DEBUG] = True
# 测试模式
# app.config[
TESTING] = True
# 保存记录
app.config[
SQLALCHEMY_RECORD_QUERIES] = True
queries
= get_debug_queries()
for q in queries:
print(q)
```
### 数据缓存
- 说明:
因为数据库的速度是一个web应用性能的瓶颈,因此,为了提高访问效率,尽可能的减少数据库的操作。可以将经常访问的数据缓存起来,再次使用时直接从缓存中获取,而不是每次都操作数据库。
- flask-cache:专门负责数据缓存的扩展。
- 安装:`pip install flask-cache`
- 使用:
```python
from flask_cache import Cache
# 配置
# 缓存类型
app.config[
CACHE_TYPE] = redis
# redis主机
app.config[
CACHE_REDIS_HOST] = 127.0.0.1
# redis端口
app.config[
CACHE_REDIS_PORT] = 6379
# redis数据库
app.config[
CACHE_REDIS_DB] = 1
# 创建对象
cache
= Cache(app, with_jinja2_ext=False)
```
- 缓存视图函数
```python
# timeout:有效期,默认为300s
# key_prefix:键前缀
@cache.cached(timeout
=100, key_prefix=index)
def index():
print(
查询数据库)
return 数据缓存
```
- 清除缓存
```python
@app.route(
/delete/)
def delete():
# 指定删除
# cache.delete(
index)
# 清空全部
cache.clear()
return 缓存已删除
```
- 缓存普通函数
```python
# 缓存普通函数时最好指定key_prefix参数
# 因为不指定时,缓存的键前缀默认是调用的视图函数所在路由
@cache.cached(timeout
=10, key_prefix=aaa)
def aaa():
print(
查询数据库)
return hello world
# 缓存普通函数
@app.route(
/common/)
def common():
return aaa()
```
- 自定义缓存
```python
@app.route(
/test/)
def test():
# 先从缓存中获取数据
data
= cache.get(test_data)
if data:
# 有缓存,直接返回
return data
# 没有缓存
print(
读取数据库)
data
= 123456
# 将数据缓存起来
cache.
set(test_data, data, timeout=20)
return data
```
?

 


推荐阅读
  • Python处理Word文档的高效技巧
    本文详细介绍了如何使用Python处理Word文档,涵盖从基础操作到高级功能的各种技巧。我们将探讨如何生成文档、定义样式、提取表格数据以及处理超链接和图片等内容。 ... [详细]
  • 本文详细介绍了 iBatis.NET 中的 Iterate 元素,它用于遍历集合并重复生成每个项目的主体内容。通过该元素,可以实现类似于 foreach 的功能,尽管 iBatis.NET 并未直接提供 foreach 标签。 ... [详细]
  • 开发笔记:9.八大排序
    开发笔记:9.八大排序 ... [详细]
  • 解析SQL查询结果的排序问题及其解决方案
    本文探讨了为什么某些SQL查询返回的数据集未能按预期顺序排列,并提供了详细的解决方案,帮助开发者理解并解决这一常见问题。 ... [详细]
  • 深入解析Redis内存对象模型
    本文详细介绍了Redis内存对象模型的关键知识点,包括内存统计、内存分配、数据存储细节及优化策略。通过实际案例和专业分析,帮助读者全面理解Redis内存管理机制。 ... [详细]
  • 对象自省自省在计算机编程领域里,是指在运行时判断一个对象的类型和能力。dir能够返回一个列表,列举了一个对象所拥有的属性和方法。my_list[ ... [详细]
  • 反向投影技术主要用于在大型输入图像中定位特定的小型模板图像。通过直方图对比,它能够识别出最匹配的区域或点,从而确定模板图像在输入图像中的位置。 ... [详细]
  • 解决Anaconda安装TensorFlow时遇到的TensorBoard版本问题
    本文介绍了在使用Anaconda安装TensorFlow时遇到的“Could not find a version that satisfies the requirement tensorboard”错误,并提供详细的解决方案,包括创建虚拟环境和配置PyCharm项目。 ... [详细]
  • 本文介绍如何在SQL Server中对Name列进行排序,使特定值(如Default Deliverable Submission Notification)显示在结果集的顶部。 ... [详细]
  • SQL查询指定时间段内票数总和并按降序排列
    本文介绍如何使用SQL语句查询特定时间段内的票数总和,并按照票数从高到低进行排序。通过实际案例和详细解释,帮助读者理解SQL查询的实现方法。 ... [详细]
  • 本文详细介绍了Python中列表的创建、访问、修改、排序及遍历等基本操作,帮助初学者快速掌握列表这一重要数据结构。 ... [详细]
  • 云计算的优势与应用场景
    本文详细探讨了云计算为企业和个人带来的多种优势,包括成本节约、安全性提升、灵活性增强等。同时介绍了云计算的五大核心特点,并结合实际案例进行分析。 ... [详细]
  • 本文详细介绍了如何通过RPM包在Linux系统(如CentOS)上安装MySQL 5.6。涵盖了检查现有安装、下载和安装RPM包、配置MySQL以及设置远程访问和开机自启动等步骤。 ... [详细]
  • 本文探讨了Java编程的核心要素,特别是其面向对象的特性,并详细介绍了Java虚拟机、类装载器体系结构、Java类文件和Java API等关键技术。这些技术使得Java成为一种功能强大且易于使用的编程语言。 ... [详细]
  • Kubernetes 持久化存储与数据卷详解
    本文深入探讨 Kubernetes 中持久化存储的使用场景、PV/PVC/StorageClass 的基本操作及其实现原理,旨在帮助读者理解如何高效管理容器化应用的数据持久化需求。 ... [详细]
author-avatar
mobiledu2502862441
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有