• 单独的 python 脚本文件使用 django 自带的 model


    django1.9.5&python3.4.4

    文件结构

    在一个爬虫脚本中将爬取的数据通过django自带的model保存到数据库
     
    修改的文件(其余pycharm新建Django项目生成,未修改):
     
    # testapp/models.py
    from django.db import models
     
    class Problem(models.Model):
    title = models.CharField(max_length=100, default="")
    author = models.CharField(max_length=100, default="")
        def __str__(self):
            return self.title
    pass

    虚拟欢迎需要安装django

    # push_view
    import os
    import sys
    import django
    
    pathname = os.path.dirname(os.path.abspath(__file__))
    sys.path.insert(0, pathname)
    sys.path.insert(0, os.path.abspath(os.path.join(pathname, '..')))
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "xad_unit.settings")
    
    django.setup()
    
    from datetime import datetime
    import time
    from pv_uv.views import exec_sql
    from pv_uv.models import Cpd
    
    
    
    class Sql_Tool(object):
    
        def zy_sql(self, date):
            #sql = 'select ngx_date, path, event_type, count(distinct request_id) as num from xad_app_log where path = "/xad_tracking" and event_type in ("xad_dl_start", "xad_dl_success", "xad_install_start", "xad_install_success", "xad_click_tracking", "xad_impression") and ngx_date="{}"and ad_system="{}" group by ngx_date, path, event_type order by ngx_date, path, event_type limit 1000'.format(
            #     date, 'liyanmobi')
    
            sql = 'select ngx_date, path, event_type, count(distinct request_id) as num from xad_app_log where path = "/xad_tracking" and event_type in ("xad_dl_start", "xad_dl_success", "xad_install_start", "xad_install_success", "xad_click_tracking", "xad_impression") and ngx_date>="{}" and ad_system="{}" and req_from="1" group by ngx_date, path, event_type order by ngx_date, path, event_type limit 1000'.format(
               date, 'liyanmobi')
    
            l_list = exec_sql(sql)
            return l_list
    
        def strint_toDate(self, string):
            return datetime.strptime(string, '%Y%m%d')
    
    
    
    if __name__ == '__main__':
    
    
        sql_tool = Sql_Tool()
        current_time = time.strftime('%Y%m%d', time.localtime(time.time()))
        #current_time = '20180726'
        l_list = sql_tool.zy_sql(current_time)
    
        print(l_list)
        #l_list = [{'ngx_date': '20180726', 'path': '/xad_tracking', 'event_type': 'xad_click_tracking', 'num': 302}, {'ngx_date': '20180726', 'path': '/xad_tracking', 'event_type': 'xad_dl_start', 'num': 182}, {'ngx_date': '20180726', 'path': '/xad_tracking', 'event_type': 'xad_dl_success', 'num': 101}, {'ngx_date': '20180726', 'path': '/xad_tracking', 'event_type': 'xad_impression', 'num': 301}, {'ngx_date': '20180726', 'path': '/xad_tracking', 'event_type': 'xad_install_start', 'num': 101}, {'ngx_date': '20180726', 'path': '/xad_tracking', 'event_type': 'xad_install_success', 'num': 42}]
        l2 = l_list
        l_list = list()
        tmp_set = set()
    
        for i_dict in l2:
            tmp_dict = dict()
            date1 = i_dict.get('ngx_date')
            if date1 not in tmp_set:
                tmp_set.add(date1)
            else:
                continue
    
            for i_i_dict in l2:
                date2 = i_i_dict.get('ngx_date')
    
                if date1 == date2:
                    tmp_dict['ngx_date'] = i_i_dict.get('ngx_date')
                    tmp_dict[str(i_i_dict.get('event_type'))] = i_i_dict.get('num')
            l_list.append(tmp_dict)
            tmp_dict = dict()
    
        print(l_list)
        for i_dict in l_list:
            cpd = Cpd()
            for key, value in i_dict.items():
    
                if key == 'ngx_date':
                    a = sql_tool.strint_toDate(i_dict.get('ngx_date'))
                    cpd.ngx_date = sql_tool.strint_toDate(i_dict.get('ngx_date'))
                if key == 'xad_click_tracking':
                    cpd.xad_click_tracking = key
                    cpd.xad_click_tracking_nums = value
                if key == 'xad_dl_start':
                    cpd.xad_dl_start = key
                    cpd.xad_dl_start_nums = value
                if key == 'xad_dl_success':
                    cpd.xad_dl_success = key
                    cpd.xad_dl_success_nums = value
                if key == 'xad_impression':
                    cpd.xad_impression = key
                    cpd.xad_impression_nums = value
                if key == 'xad_install_start':
                    cpd.xad_install_start = key
                    cpd.xad_install_start_nums = value
                if key == 'xad_install_success':
                    cpd.xad_install_success = key
                    cpd.xad_install_success_nums = value
            cpd.save()
     
  • 相关阅读:
    GTD180007:【运维】LINUX学习
    GTD180006:【运维】安装调试GDB
    {done}GTD180005:【翻译】LISP prehistory
    ComPiler180001:【学习】编译器学习链接
    AIIE180002:AIIE2015大会主题
    AIIE180001:AIIE2016大会主题
    GTD180004:【开发】python_med
    GTD180003:【开发】python_oeis
    欧亚大帝国及一战、二战
    大洲分界线
  • 原文地址:https://www.cnblogs.com/zhaoyingjie/p/9389059.html
Copyright © 2020-2023  润新知