第一种导入数据是用自带的shell工具
·python manage.py shell 进入shell
·from courses.models import Teacher #导入模型类
·t=Teacher(nicename="jack")#创建一个teacher对象
·t.save()#保存
第二种导入通过脚本批量导入
import os
import sys
import random
import django
from datetime import date
project_path=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(project_path)#将项目路径添加到系统搜寻路径当中
os.environ['DJANGO_SETTINGS_MODULE'] = 'imooc.settings'#设置项目的配置文件
django.setup()
from orm.models import Teacher,Course,Student,TeacherAssistant
def import_data():
"""使用Django ORM导入数据"""
#讲师数据create()
Teacher.objects.create(nickname="Jack",introduction="Python工程师",fans=666)
Teacher.objects.create(nickname="Allen",introduction="Java工程师",fans=123)
Teacher.objects.create(nickname="Henry",introduction="Golang工程师",fans=888)
#课程数据 bulk_create()
Course.objects.bulk_create([Course(title=f"python系列教程{i}",teacher=Teacher.objects.get(nickname="Jack"),
type=random.choice((0,1,2)),
price=random.randint(200,300),
volume=random.randint(100,10000),
online=date(2018,10,1))
for i in range(1,5)])
Course.objects.bulk_create([Course(title=f"Java系列教程{i}",teacher=Teacher.objects.get(nickname="Allen"),
type=random.choice((0,1,2)),
price=random.randint(200,300),
volume=random.randint(100,10000),
online=date(2018,10,1))
for i in range(1,5)])
Course.objects.bulk_create([Course(title=f"Golang系列教程{i}",teacher=Teacher.objects.get(nickname="Henry"),
type=random.choice((0,1,2)),
price=random.randint(200,300),
volume=random.randint(100,10000),
online=date(2018,10,1))
for i in range(1,5)])
#学生数据 updata_or_create()
Student.objects.update_or_create(nickname="A同学",defaults={"age":random.randint(18,58),
"gender":random.choice((0,1,2)),
"study_time":random.randint(9,999)})
Student.objects.update_or_create(nickname="B同学",defaults={"age":random.randint(18,58),
"gender":random.choice((0,1,2)),
"study_time":random.randint(9,999)})
Student.objects.update_or_create(nickname="C同学",defaults={"age":random.randint(18,58),
"gender":random.choice((0,1,2)),
"study_time":random.randint(9,999)})
Student.objects.update_or_create(nickname="D同学",defaults={"age":random.randint(18,58),
"gender":random.choice((0,1,2)),
"study_time":random.randint(9,999)})
#正向添加
# 销量大于等于1000的课程
Student.objects.get(nickname="A同学").course.add(*Course.objects.filter(volume__gte=1000))
#销量大于5000的课程
Student.objects.get(nickname="B同学").course.add(*Course.objects.filter(volume__gt=1000))
#反向添加
#学习时间大于等于500小时的同学
Course.objects.get(title="Python系列教程1").student_set.add(*Student.objects.filter(study_time__gte=500))
#学习时间小于等于500小时的同学
Course.objects.get(title="Python系列教程2").student_set.add(*Student.objects.filter(study_time__lte=500))
#助教数据 get_or_create()
TeacherAssistant.objects.get_or_create(nickname="助教1",defaults={"hobby":"学习","teacher":Teacher.objects.get(nickname="Jack")})
TeacherAssistant.objects.get_or_create(nickname="助教2",defaults={"hobby":"看美女","teacher":Teacher.objects.get(nickname="Allen")})
TeacherAssistant.objects.get_or_create(nickname="助教3",defaults={"hobby":"泡妞","teacher":Teacher.objects.get(nickname="Henry")})
return True
if __name__ == '__main__':
if import_data():
print("数据导入成功")
第三种导入方式 fixtures 这个也是一种常见的数据初始化方法它可以提供一个可以被Django serialization识别的序列化文件可以被自动转换成对应的model然后保存到数据库
#把数据数据导出成json文件python manage.py dumpdata > imooc.json
#导入数据:python manage.py loaddata imooc.json
第四种导入方式这种方式和django没有关系 数据库层面的导入数据
windows下的Mysql客户端 mysql.exe/mysql -hPup 数据库名称<备份文件目录
source 备份文件所在路径;
导出的话除了上面的方法可以使用pycharm 中Databse右键Dump data to File 进行导出
或者使用其他数据库工具导出