django 多对多关系表批量导入excel数据表

# coding:utf-8
import sys

from django.core.management.base import BaseCommand, CommandError
from django.core.management import call_command
import json,pdb,hashlib
from demo.models import *
import xlrd


class Command(BaseCommand):
    """
    从文件中读取QA语料,并存储语义QA和普通QA中
    """

    # option_list = BaseCommand.option_list + (
    #     make_option('--file_path',help="file_path",type="string"),
    #     make_option('--service_sha1',help="service_sha1",type="string"),
    # )

    def add_arguments(self, parser):

        parser.add_argument(
            '-fp',
            '--file_path',
            action='store',
            dest='file_path',
            default='close',
            help='lala',
        )
        parser.add_argument(
            '-ss',
            '--service_sha1',
            action='store',
            dest='service_sha1',
            default='close',
            help='kaka',
        )

    def handle(self, *args, **options):
        # 获取参数
        file_path = options['file_path']
        service_sha1 = options['service_sha1']

        # 查找应用
        try:
            service = Service.objects.get(sha1=service_sha1)
        except Exception as e:
            print('用户不存在')


        # 读取文件
        data = xlrd.open_workbook(file_path)
        print('------')
        # 分别处理每个表单
        sheets = data.sheets()
        for sheet in sheets:
            nrows = sheet.nrows

            # 遍历每一行数据
            for i in range(nrows):
                if i == 0:
                    continue
                row_list = sheet.row_values(i)

                demo_sha1 = row_list[0].strip()
                demo_name = row_list[1].strip()
                demo_content = row_list[2].strip()
                # 检查语料是否存在
                is_exist = TMLDemo.objects.filter(sha1=demo_sha1).exists()

                if not is_exist:

                    # 语料存储到数据库
                    tmldemo = TMLDemo(
                        sha1 = demo_sha1,
                        demo_name = demo_name,
                        demo_content = demo_content,

                    )
                    tmldemo.save()

                # 计算sha1
                item_sha1 = hashlib.sha1()
                item_sha1.update((service_sha1 + demo_sha1).encode())
                item_sha1 = item_sha1.hexdigest()

                is_item_exist = DemoServiceRelation.objects.filter(sha1=item_sha1).exists()
                if not is_item_exist:
                    item = DemoServiceRelation(
                        sha1 = item_sha1,
                        demo_sha1 = demo_sha1,
                        service_sha1 = service_sha1,

                    )
                    item.save()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值