Postgresql的json充当字典应用

一般我们会将一些系统参数放到参数表中,有些参数的值是json结构,那么如何在查询时引用这些参数??

比如我在业务表的的xxx_type,或xxx_status记录的是key,又想在查询的时候显示其描述。

  • 先定义字典
    如下图在这里插入图片描述
  • 如何应用
    Postgresql对json的处理非常方便,如下面这sql:
select ...
       v1.svalue::json->>d.prod_type as 类型,
      ...
       v2.svalue::json->>d.status as 状态
       from mes_ro m inner join mes_rod d on d.zid=m.id
         inner join mes_jobreport j on j.thisid=d.jobid
         inner join sys_values v1 on v1.category='dyna_field_values' and v1.key_name='ROD_TYPE'
         inner join sys_values v2 on v2.category='dyna_field_values' and v2.key_name='ROD_STATUS'
### Django 后端数据库的使用与配置 #### 1. 数据库配置 在 Django 中,数据库的配置通常通过项目的 `settings.py` 文件完成。默认情况下,Django 提供了一个 SQLite 的本地数据库作为开发环境的选择[^1]。如果需要切换到其他类型的数据库(如 MySQL 或 PostgreSQL),可以通过修改 `DATABASES` 字典来实现: ```python DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 使用 MySQL 数据库引擎 'NAME': 'your_database_name', # 数据库名称 'USER': 'your_username', # 用户名 'PASSWORD': 'your_password', # 密码 'HOST': 'localhost', # 主机地址 'PORT': '3306', # 端口号,默认为 3306 对于 MySQL } } ``` 上述代码展示了如何将数据库设置为 MySQL,并指定了必要的参数以建立连接。 --- #### 2. 迁移脚本与数据同步 当定义好模型后,Django 需要生成迁移文件并将其应用于实际的数据库中。这一步骤涉及两个命令: - **创建迁移文件**:`python manage.py makemigrations` - **执行迁移**:`python manage.py migrate` 这些命令会根据模型的变化更新数据库结构,确保两者保持一致。 --- #### 3. 注册模型至后台管理 为了使开发者能够更便捷地管理和操作数据库中的记录,可以将模型注册到 Django 自带的 Admin 后台系统中。例如,在 `admin.py` 文件中添加如下代码即可完成注册[^4]: ```python from django.contrib import admin from .models import SimpleModel admin.site.register(SimpleModel) ``` 这样做的好处是可以直接通过浏览器访问 `/admin/` 页面对 `SimpleModel` 表的内容进行增删改查操作[^3]。 --- #### 4. 响应数据给前端 对于前后端分离的应用场景,Django 往往充当 API 接口的角色,因此其返回形式多为 JSON 格式的 HTTPResponse[^2]。以下是简单的视图函数示例,用于向客户端发送 JSON 数据: ```python from django.http import JsonResponse def example_view(request): data = {'key': 'value'} return JsonResponse(data) ``` 注意,如果从前端接收到的数据是以字符串形式传递,则可能需要用 JavaScript 方法 `JSON.parse()` 将其转化为对象以便进一步处理[^5]。 --- #### 5. 性能优化建议 随着项目规模的增长,数据库查询效率成为影响整体性能的重要因素之一。以下是一些常见的优化策略: - **减少不必要的查询次数**:利用 `select_related()` 和 `prefetch_related()` 函数预加载关联字段,从而降低 N+1 查询问题的发生概率。 - **索引设计合理化**:针对频繁使用的过滤条件或排序依据列增加索引支持,提升检索速度。 - **缓存机制引入**:借助 Redis 或 Memcached 缓存热点数据,减轻数据库压力。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值