<!--python安装手册开始-->
<!--python安装手册结束-->
<div id="article_content" class="article_content clearfix">
<!--一个博主专栏付费入口-->
<!--一个博主专栏付费入口结束-->
<link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-833878f763.css">
<div id="content_views" class="markdown_views prism-atom-one-dark">
<!-- flowchart 箭头图标 勿删 -->
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
<path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path>
</svg>
<p>需求:手动写操作日志存库,每次都需要访问一次数据库,性能较差,改为先存到缓存文件,特定条件触发/定时写入数据库,</p>
在django1.4以后加入了新的特性。使用django.db.models.query.QuerySet.bulk_create()批量创建对象,减少SQL查询次数。改进如下:
add_record_list=[]
f=utils.open_txt(cache_file_name)
for line in f.readlines():
record_line = json.loads(line)
#创建一个对象
obj =record(
user_name=record_line['user_name'],#操作人
operate_old_record=record_line['old_content'],#具体操作的内容(旧)
operate_now_record=record_line['new_content'],#具体操作的内容(新)
)
add_record_list.append(obj)
#批量写入数据
record.objects.bulk_create(add_record_list)
其中record是模型对象,替换为对应即可。
record.objects.bulk_create(add_record_list)