django上传数据(2)
来源:互联网 发布:淘宝码工助手 编辑:程序博客网 时间:2024/06/05 03:09
三、批量导入
比如我们要导入一个文本,里面是标题和内容,中间用四个*隔开的,示例(oldblog.txt):
1
2
3
4
5
6
7
8
9
title 1****content 1
title 2****content 2
title 3****content 3
title 4****content 4
在终端导入有时候有些不方便,我们在 最外面那个 mysite目录下写一个脚本,叫 txt2db.py,把 oldblog.txt也放在mysite下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/usr/bin/env python
#coding:utf-8
import
os
os.environ.setdefault(
"DJANGO_SETTINGS_MODULE"
,
"mysite.settings"
)
''
'
Django 版本大于等于1.7的时候,需要加上下面两句
import
django
django.setup()
否则会抛出错误 django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet.
''
'
import
django
if
django.VERSION >= (1, 7):
#自动判断版本
django.setup()
def main():
from blog.models
import
Blog
f =
open
(
'oldblog.txt'
)
for
line
in
f:
title,content = line.
split
(
'****'
)
Blog.objects.create(title=title,content=content)
f.close()
if
__name__ ==
"__main__"
:
main()
print(
'Done!'
)
好了,我们在终端运行它
1
2
python txt2db.py
# 运行完后显示 一个 Done! 导入完成!
运行完毕后会打出一个 "Done!", 数据已经全部导入!
四、导入数据重复解决办法
如果你导入数据过多,导入时出错了,或者你手动停止了,导入了一部分,还有一部分没有导入。或者你再次运行上面的命令,你会发现数据重复了,怎么办呢?
django.db.models 中还有一个函数叫 get_or_create()有就获取过来,没有就创建,用它可以避免重复,但是速度可以会慢些,因为要先尝试获取,看看有没有
只要把上面的
1
Blog.objects.create(title=title,content=content)
换成下面的就不会重复导入数据了
1
Blog.objects.get_or_create(title=title,content=content)
返回值是(BlogObject, True/False) 新建时返回 True, 已经存在时返回 False。
更多数据库API的知识请参见官网文档:QuerySetAPI
最常见的fixture文件就是用python manage.py dumpdata 导出的文件,示例如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[
{
"model": "myapp.person",
"pk": 1,
"fields": {
"first_name": "John",
"last_name": "Lennon"
}
},
{
"model": "myapp.person",
"pk": 2,
"fields": {
"first_name": "Paul",
"last_name": "McCartney"
}
}]
你也可以根据自己的models,创建这样的json文件,然后用 python manage.py loaddatafixture.json 导入
详见:https://docs.djangoproject.com/en/dev/howto/initial-data/
可以写一个脚本,把要导入的数据转化成 json 文件,这样导入也会更快些!
0 0
- django上传数据(2)
- django上传数据(1)
- django上传数据(3)
- Django实现数据上传到数据库操作
- Django学习(2)数据宝库
- Django学习笔记(六)Django上传文件
- Django-文件上传与下载(FileFlid)
- AJAX实现上传进度条(Django)
- Django-uploadfile(上传图片为例)
- Django - 上传文件(初稿)
- django 文件上传
- django 文件上传
- Django的文件上传
- DJANGO 上传 image
- django上传文件
- django上传图片
- django 文件上传
- django上传文件
- 移动端适配——rem方案
- 使用mysql报错显示Reason: im…
- django开发过程中,报错CSRF t…
- Django上传图片例子
- django上传数据(1)
- django上传数据(2)
- django上传数据(3)
- presto架构及其原理
- python django批量导入mysql…
- django models filter&n…
- python pandas numpy&nb…
- Highcharts制作图片表设置线条颜色…
- 使用python对url编码解码
- Laravel 5如何在中间件中获取路由参数?