网络编程

urllib的request模块可以非常方便地抓取URL内容,也就是发送一个GET请求到指定的页面,然后返回HTTP的响应。

校验返回值,进行接口测试:

编码:把一个Python对象编码转换成Json字符串   json.dumps()

解码:把Json格式字符串解码转换成Python对象   json.loads()

Post请求:

urllib库里面有个urlencode函数,可以把key-value这样的键值对转换成我们想要的格式。

requests模块

urllib模块是python自带的网页模块,但是并不好用,好用的是requests模块

requests.get(url,params=data) get请求,返回的可以是字典也可以是json串

requests.post(url,data)post请求,返回的可以是字典也可以是json串

requests.get/post(..cookies=)请求加cookie,注意cookie是字典,不是字符串

requests.get/post(..headers=)请求加header

requests.post(..files=)上传文件,注意excel和图片需要用‘rb’

request.get(url) .content下载文件,二进制文件要用‘wb’

异常处理

程序一旦报错,就会中止运行,不够人性化,希望有问题的部分可以给出提示,没有问题的部分可以正常运行,可以用if做判断,但会导致代码不易读

try:检查哪些代码会产生异常,后面跟except来捕获异常,如果没有捕捉到异常,程序还是会报错

except 某类异常 as e:如果try中发生该类异常,则执行。一个try可以写多个except,用来捕捉多类异常。如果想捕捉全部异常,用except Exception as e

finally:不管try中是否发生异常,都会执行

Django部署

安装django模块:

打开cmd执行以下命令

pip install django==1.9

django-admin startproject my_django

打开pycharm,新建一个项目

把源代码覆盖到这个项目

安装mysql  MySQL Server 5.7:

打开或新建mysql路径\my.ini,输入以下内容保存

[mysqld]

basedir=mysql路径

datadir=mysql路径\data

port=3308

mysql路径下打开cmd执行以下命令

mysqld --install MYSQL_NEW --defaults-file= mysql路径\my.ini

net start MYSQL_NEW

连接数据库,新建一个main数据库

并执行main.sql初始化数据库表

安装redis  Redis-x64-3.2.100:

打开redis.windows.conf查找requirepass foobared,在下一行加requirepass 你的密码

Redis路径下打开cmd执行以下命令

redis-server redis.windows.conf

启动服务:

项目路径下打开cmd,执行以下命令

python manage.py runserver 0.0.0.0:8000

打开浏览器,输入地址

FAQ

django.db.utils.OperationalError: (2003, "Can't connect to MySQL server on '127.0.0.1' ([WinError 10061] 由于目标计算机积极拒绝,无法连接

说明mysql服务没有启起来

django.db.utils.InternalError: (1366, "Incorrect string value: '\\xE7\\x94\\xA8\\xE6\\x88\\xB7...' for column 'name' at row 1")

sql不能在pycharm里执行,要放到navicat里执行

Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

说明sql模式是only_full_group_by,但是写的sql中group by前面的字段不全

解决办法两种:第一种sql不变,在my.ini加上

[mysqld]

sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

第二种把sql里group by前面的字段补全,建议用第一种

内置函数

zip()函数:用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表

还可以搭配for循环使用:

map()函数:Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。

两个参数一个是函数名,另一个是列表或元组。

注意:map()函数不改变原有的 list,而是返回一个新的 list。

filter()函数:用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。

和map()类似,filter()也接收一个函数和一个序列。和map()不同的时,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。

python基础-requests模块、异常处理、Django部署、内置函数、网络编程的更多相关文章

  1. Python基础学习参考(三):内置函数

    一:内置函数 在第一篇文章中,我们简单的认识了一下print()函数和input()函数,也就是输入和输出,这些函数我们可以直接的调用,不要自己定义或者引入什么,对吧?想这样的函数就叫做内置函数.这里 ...

  2. python基础-第四篇-4.1内置函数

    lambda表达式 lambda表达式是对简单函数的精简化表达 语法结构:函数名 = lambda:运算表达式 def f1(a): a = a + 1 return a ret = f1(1) pr ...

  3. python基础之递归,匿名,内置函数

    递归函数: 什么是递归函数? 函数递归调用:在调用一个函数的过程中,又直接或间接地调用了该函数本身. 递归必须要有两个明确的阶段: ①递推:一层一层递归调用下去,强调:每进入下一层问题规模减少 ②回溯 ...

  4. python基础语法20 面向对象5 exec内置函数的补充,元类,属性查找顺序

    exec内置函数的补充 exec: 是一个python内置函数,可以将字符串的代码添加到名称空间中; - 全局名称空间 - 局部名称空间 exec(字符串形式的代码, 全局名称空间, 局部名称空间) ...

  5. Python第八天 模块 包 全局变量和内置变量__name__ Python path

    Python第八天  模块   包   全局变量和内置变量__name__    Python path 目录 Pycharm使用技巧(转载) Python第一天  安装  shell  文件 Pyt ...

  6. Py修行路 python基础 (十八) 反射 内置attr 包装

    一.isinstance 和 issubclass1.isinstance(obj,cls)检查是否obj是否是类 cls 的对象.2.issubclass(sub, super)检查sub类是否是 ...

  7. Python开发【第五篇】内置函数

    abs() 函数返回数字的绝对值 __author__ = "Tang" a = -30 all() 函数用于判断给定的可迭代参数iterable中的所有元素是否都为True,如果 ...

  8. 洗礼灵魂,修炼python(42)--巩固篇—type内置函数与类的千丝万缕关系

    type函数的隐藏属性 相信大家都知道内置函数type是用来查看对象的数据类型的.例: 那比如我对int类查看类型呢? 有朋友会说,int是内置类啊,用自定义的应该不会这样,我们自定义一个类呢? 还是 ...

  9. Python自动化运维之5、内置函数

    python3.x内置函数 官网详解 一些例子:后期慢慢接触到再补充 # help() 详细查看某个类有那些方法或者方法的具体使用 >>> help(str) >>> ...

随机推荐

  1. [转] 梦里Babel知多少(一)

    平时开发中,经常需要用到ES6/ES7的语法.那么就需要用到Babel来对代码进行转码处理. 之前用Vue比较多,所以以Vue-cli作为参考来分析.  第一张图是几个月前的Vue-cli生成的 第二 ...

  2. [转] mongoDB与mongoose

    mongoDB简介 mongoDB与一些关系型数据库相比,它更显得轻巧.灵活,非常适合在数据规模很大.事务性不强的场合下使用.同时它也是一个对象数据库,没有表.行等概念,也没有固定的模式和结构,所有的 ...

  3. [转] Node.js中package.json中库的版本号详解(^和~区别)

    当我们查看package.json中已安装的库的时候,会发现他们的版本号之前都会加一个符号,有的是插入符号(^),有的是波浪符号(~).那么他们到底有什么区别呢?先贴一个例子,对照例子来做解释: bl ...

  4. php函数xml转化数组

    /** * xml转数组 * @param $xml * @return array */ function xml_to_array( $xml ) { $reg = "/<(\\w ...

  5. sharepoint2013 Restore-SPSite 报错,采用数据库还原

    PS C:\Users\spadmin> Restore-SPSite http://hz0xw002049:8099 -Path D:\20170731MossSiteSP.bak -Forc ...

  6. fputcsv导出大量数据

    <?php set_time_limit(0); ini_set('memory_limit', '128M'); $fileName = date('YmdHis', time()); hea ...

  7. 在grails中远程调用action

    在进行类似批处理的程序时,如果在一个action中需要保存很多记录数,这会导致grails中的数据库session超过负荷,从而导致OOM. 因为这个情况的发生是由于在一次请求中,对数据进行的修改都保 ...

  8. 一起学Hive——创建内部表、外部表、分区表和分桶表及导入数据

    Hive本身并不存储数据,而是将数据存储在Hadoop的HDFS中,表名对应HDFS中的目录/文件.根据数据的不同存储方式,将Hive表分为外部表.内部表.分区表和分桶表四种数据模型.每种数据模型各有 ...

  9. net core体系-3再次认识net core

    1 什么是ASP.NET Core ASP.NET Core 是一个全新的开源.跨平台框架,可以用它来构建基于网络连接的现代云应用程序,比如:Web 应用,IoT(Internet Of Things ...

  10. 今天这篇内容分享Apache由http自动跳转到https的多种方法

    本文主要和大家分享Apache http自动跳转到https的几种方法,非常不错,具有参考借鉴价值,需要的朋友参考下 本文主要和大家分享Apache http自动跳转到https的几种方法,当你的站点 ...