Django-ORM数据导入和导出

第一种导入数据是用自带的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 进行导出
或者使用其他数据库工具导出
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值