django - 从 Django 模型中加载表中的所有数据运行查询
问题描述
我想知道我们如何在完全加载到内存后从数据中运行查询,以防止它每次都访问数据库
这是我的模特
class empdb(models.Model):
empid = models.CharField(max_length=8,primary_key=True)
empname = models.CharField(max_length=255)
empdept = models.CharField(max_length=255)
class Meta:
ordering = ('empid',)
def __str__(self):
return self.empid
这就是我正在尝试的
record = empdb.objects.all() ' This will load all data in "record"
现在如何根据我们的查询从中读取并提取数据
我正在尝试以下查询以找出哪些员工是人力资源部门的一部分
dataset=backuprecord.filter(empdept='HR')
print(dataset)
现在这是我卡住的地方。我得到的输出很好,它确实列出了我得到的数据,但它的形式如下
<QuerySet [<empid: 10010>,<empid: 10121>,<empid: 12235>,<empid: 18110>]>
我想从上面的查询集中取出 empid 和 empname
我该怎么做?
我想要的是以下变量中的数据
for i in <length of query set>
foundempid[i] = ''' The Employee ID from the queryset Line
foundempname[i] = ''' The Employee Name
对此的任何帮助将不胜感激。
解决方案
您可以使用values
这样的功能。
empdb.objects.filter(your_filter_params).values('empid', 'empname')
这将为您提供字典列表。
[{'empid': 1212, 'empname': '姓名'}, {'empid': 1212, 'empname': '姓名'}]
您可以像这样以列表形式获得它。
empids = empdb.objects.filter(your_filter_params).values_list('empid', flat=True)
empnames = empdb.objects.filter(your_filter_params).values_list('empname', flat=True)
推荐阅读
- java - 无法在火花流中使用直接 kafka 流反序列化 avro 数据
- javascript - javascript函数仅适用于第二次点击
- c# - 在模型弹出窗口上单击提交时进行验证?
- azure - Azure DevOps 作业忽略失败
- node.js - 如何在查询运行时将属性与 dynamodb 表中的小写值进行比较-> 项目-> 属性
- python - 查找 ISO 8601 次之间的持续时间
- sql-server - 使用触发器从表插入中记录多行数据
- android - Room @Ignore 注解生成编译时错误
- google-app-engine - 如何将通用目录请求映射到 Google AppEngine 中相应的 index.html 文件?
- python - 如何从 pandas 的一个 TXT 文件中读取多个表?