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()
 

单独的 python 脚本文件使用 django 自带的 model的更多相关文章

  1. django系列5.4--ORM中执行原生SQL语句, Python脚本中调用django环境

    ORM执行原生sql语句 在模型查询API不够用的情况下,我们还可以使用原始的SQL语句进行查询. Django 提供两种方法使用原始SQL进行查询:一种是使用raw()方法,进行原始SQL查询并返回 ...

  2. Django框架(八)--单表增删改查,在Python脚本中调用Django环境

    一.数据库连接配置 如果连接的是pycharm默认的Sqlite,不用改动,使用默认配置即可 如果连接mysql,需要在配置文件中的setting中进行配置: 将DATABASES={} 更新为 DA ...

  3. Django框架(九)—— 单表增删改查,在Python脚本中调用Django环境

    目录 单表增删改查,在Python脚本中调用Django环境 一.数据库连接配置 二.orm创建表和字段 三.单表增删改查 1.增加数据 2.删除数据 3.修改数据 4.查询数据 四.在Python脚 ...

  4. Python--day69--pythonDjango终端打印SQL语句、在Python脚本中调用Django环境

    Django终端打印SQL语句 在Django项目的settings.py文件中,在最后复制粘贴如下代码: LOGGING = { 'version': 1, 'disable_existing_lo ...

  5. ORM基础3 在python脚本里调用Django环境

    1.查询 1.# all获取所有的object,结果QuerySet,列表 print('all'.center(80, '=')) ret = models.Person.objects.all() ...

  6. $Django 多表操作(增删改查,基于双下划线,对象的查询) 在Python脚本中调用Django环境

    在Python脚本中调用Django环境. import osif __name__ == '__main__': os.environ.setdefault("DJANGO_SETTING ...

  7. Python核心笔记:在python文件中如何调用其它python脚本文件,你肯定不会

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:zhujuyu 笔者在自学python的时候遇到了这样一个练习题:将 ...

  8. python脚本文件删除

    昨天有需求需要用python脚本删除一个目录下的文件.遇到了点麻烦. 使用的是shutil.rmtree(dir)函数,这个函数可以删除有内容的目录,而shutil.rmdir(dir)只能删除空目录 ...

  9. Django框架----在Python脚本中调用Django环境

    在项目根目录下新建脚本文件script.py import os if __name__ == '__main__': os.environ.setdefault("DJANGO_SETTI ...

随机推荐

  1. NFS安装及优化过程--centos6.6

    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 30 31 32 33 34 35 36 3 ...

  2. 树莓派进阶之路 (008) - 树莓派安装ftp服务器(转)

    vsftpd是开源的轻量级的常用ftp服务器.   1,安装vsftpd服务器 (约400KB) sudo apt-get install vsftpd     2,启动ftp服务 sudo serv ...

  3. 【Oracle】Oracle索引

    在关系数据库中,索引是一种与表有关的数据库结构,它可以使对应于表的SQL语句执行得更快.索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容. 对于数据库来说,索引是一个必选项,但对于现 ...

  4. 【struts2】名为dispatcher的ResultType

    1)基本使用 名称为“dispatcher”的ResultType,在struts-default.xml里的配置如下: <result-type name="dispatcher&q ...

  5. 通过管理员命令进入D盘

    第一步:Windows键+R打开运行 输入cmd敲回车,打开命令提示符程序.或者点击开始,再点击运行,即可打开命令提示符程序:或者在开始菜单的搜索框中输入CMD:点击运行. 第二步:输入CMD,回车. ...

  6. MySQL -- Innodb是如何处理自增列的

    对于那些向带有自增列的表中插入行的语句,Innodb提供一种可配置的锁定机制,这种锁定机制可以显著提高SQL语句的可伸缩性和性能. Innodb中为了使用自增机制,自增列必须是索引的部份,从而可以使用 ...

  7. Python - 列表解析式/生成器表达式

    列表解析式: [expr for iter_var in iterable if cond_expr] 生成器表达式: (expr for iter_var in iterable if cond_e ...

  8. .NET Core 2.0 Cookie中间件 权限验证

    :在ConfigureServices添加Cookie中间件,使用自定义Scheme services.AddAuthentication(options=> { options.Default ...

  9. iOS 9 学习系列: Xcode Code Coverage

    Code coverage 是一个计算你的单元測试覆盖率的工具. 高水平的覆盖给你的单元測试带来信心.也表明你的应用被彻底的測试过了. 你可能写了几千个单元測试,但假设覆盖率不高.那么你写的这套測试可 ...

  10. 使用mysqldump导入导出MySQL数据库

    数据库的基本导入\导出的命令 是 mysqldump 和 source 在linux下直接用命令行操作就可以 在windows下 一般情况下有两种方法一个也是用命令行 另一个是用phpmyadmin ...