Python零基础快速入门学习笔记

文章目录

      • [1. 安装python](#1. 安装python)
      • [2. 安装vscode](#2. 安装vscode)
      • [3. python语法](#3. python语法)
        • [3.1 流程控制](#3.1 流程控制)
          • [3.1.1 条件语句](#3.1.1 条件语句)
          • [3.1.2 循环语句](#3.1.2 循环语句)
        • [3.2 模块与包](#3.2 模块与包)
          • [3.2.1 模块](#3.2.1 模块)
          • [3.2.2 包](#3.2.2 包)
        • [3.3 数据类型](#3.3 数据类型)
          • [3.3.1 数字(Number)](#3.3.1 数字(Number))
          • [3.3.2 字符串(string)](#3.3.2 字符串(string))
          • [3.3.3 列表(list)](#3.3.3 列表(list))
          • [3.3.4 元组(tuple)](#3.3.4 元组(tuple))
          • [3.3.5 集合(set)](#3.3.5 集合(set))
          • [3.3.6 字典(dict)](#3.3.6 字典(dict))
        • [3.4 异常处理](#3.4 异常处理)
        • [3.5 类、对象、方法](#3.5 类、对象、方法)
          • [3.5.1 类与对象](#3.5.1 类与对象)
          • [3.5.2 成员变量和成员方法](#3.5.2 成员变量和成员方法)
          • [3.5.3 构造方法](#3.5.3 构造方法)
          • [3.5.4 Python类内置的类方法:](#3.5.4 Python类内置的类方法:)
        • [3.6 面向对象](#3.6 面向对象)
          • [3.6.1 封装](#3.6.1 封装)
          • [3.6.2 继承](#3.6.2 继承)
          • [3.6.3 多态](#3.6.3 多态)
        • [3.7 文件操作](#3.7 文件操作)
        • [3.8 变量的类型注解](#3.8 变量的类型注解)
        • [3.9 操作MySQL](#3.9 操作MySQL)
          • [3.9.1 操作步骤](#3.9.1 操作步骤)
          • [3.9.2 建表](#3.9.2 建表)
          • [3.9.3 单条插入SQL](#3.9.3 单条插入SQL)
          • [3.9.4 批量插入](#3.9.4 批量插入)
          • [3.9.5 查询SQL](#3.9.5 查询SQL)
          • [3.9.6 更新SQL](#3.9.6 更新SQL)
          • [3.9.7 删除SQL](#3.9.7 删除SQL)
        • [3.10 操作mongodb](#3.10 操作mongodb)
          • [3.10.1 操作步骤](#3.10.1 操作步骤)
          • [3.10.2 增删改查](#3.10.2 增删改查)
        • [3.11 发送http请求](#3.11 发送http请求)
          • [3.11.1 发送post请求 json格式](#3.11.1 发送post请求 json格式)
          • [3.11.2 发送post请求 form-data格式](#3.11.2 发送post请求 form-data格式)
          • [3.11.2 发送get请求](#3.11.2 发送get请求)

1. 安装python

官网链接 windows7最高安装版本3.8.10

安装过程选择Add Pytyon 3.8 to PATH,这样就可以在任意路径使用Python了,同时也可以自定义一下Python的安装路径,不建议选在C盘。

Win+R打开命令行界面,输入python --version,会显示Python的版本号,至此Pytyon安装就已经完成。

linux版本python --version,默认的是python3以下的版本,想看python3的版本,需要输入python3 --version

2. 安装vscode

官方链接,直接下载windows版本即可。

下载后选择安装在非C盘,五个框框都勾选,然后一路next即可愉快地进行python编程了。

安装插件:设置-->扩展-->应用商店搜索对应插件

安装Python插件:VS Code官方自带插件

3. python语法

python对缩进要求比较严格,以Tab键或者4个空格进行缩进。与java不同,并没有{}进行代码段的控制,而是通过缩进来控制代码段。虽然java也可省略{},但不推荐。且python末尾的分号";"可有可无,java必须有。

注释:

单行注释采用#,可以使用ctrl+/快速注释。

多行注释: 以 一对三个双引号 引起来 (""" """)来解释说明一段代码的作用使用方法

三引号即能用做 多行注释 又能用做 字符串定义

3.1 流程控制
3.1.1 条件语句

if 语句

python 复制代码
age=18
if age>=18:
    print("成年")

if-else 语句

python 复制代码
 age=17
 if age>=18:
     print("成年")
 else:
     print("未成年")

if-elif-else 语句

python 复制代码
age=17
if age>=65:
    print("老年")
elif age>=35:
    print("中年")
else:
    print("青少年")
3.1.2 循环语句

Python支持两种循环语句:while和for。

while循环

python 复制代码
    i=0
    sum=0
    while i<=10:
        sum+=i
        i+=1   
    print(sum)

for循环

Python中的for比较特殊,只能迭代列表、字符串等任意序列,不能迭代算数递增值,或者定义结束条件。

如果想要跳出循环或者跳过本次循环?使用break/continue ,这与java中保持一致。

python 复制代码
    names=['北方有佳人','遗世而独立','一顾倾人城','再顾倾人国']
    for name in names:
        print(name)

如果想对数字序列进行迭代就得用到range()函数:

python 复制代码
    for i in range(11):
        print(i)

python定义函数

python 复制代码
def printNum(num):
    print(num);
    return True;
printNum(10);

def: python中用def关键字定义函数

printNum:函数名

num:函数的形参

print(num):函数体

return True:函数的返回值

3.2 模块与包
3.2.1 模块

一个Python文件,以.py 结尾,能定义函数,类和变量,也能包含可执行的代码

通过函数我们可以实现很多代码的复用,但是所有的函数我们也不能都写在一个文件里,必须拆分文件。文件拆分后,就得用到Python的模块来调用函数。

导入语法:

[from 模块名] import [模块|类|变量|函数|*] [as 别名]

*表示导入所有

常用的组合形式如:

import 模块名

from 模块名 import 类、变量、方法等

from 模块名 import *

import 模块名 as 别名

from 模块名 import 功能名 as 别名

from可以省略,直接import

as别名可以省略

通过"."来调用模块提供的功能

模块的导入一般写在代码文件的开头位置

新建test.py文件

python 复制代码
def printNum(num):
    print(num);

导入test模块,并调用printNum函数

python 复制代码
import test
test.printNum(100)

注意一

在实际开发中,当一个开发人员编写完一个模块后,为了让模块能够在项目中达到想要的效果,开发人员可能会在在py文件中添加一些测试信息。此时,无论是当前文件,还是其他已经导入了该模块的文件,在运行的时候都会自动执行测试信息

python 复制代码
# 只在当前文件中运行条件才为True,导入其他文件时均为False
if __name__ == '__main__':
# __main__ 运行时程序的名称
# __name__ 系统自动赋值,不用管
# 在Run时为 __main__ 
# 未Run时为 文件名称

注意二

当导入多个模块的时候,如果模块内有同名功能,且未使用用法一导入形式,后面导入的模块将会覆盖前面模块内同名的功能。

注意三

如果一个模块文件中有__all__变量,当使用from xxx import *导入时,只能导入这个列表中的元素

3.2.2 包

当Python的模块太多了,就可能造成一定的混乱,此时可以通过Python包的功能来管理。

从物理上看,包就是一个文件夹,在该文件夹下包含了一个 init.py 文件,该文件夹可用于包含多个模块文件

从逻辑上看,包的本质依然是模块

自定义包

当我们的模块文件越来越多时,包可以帮助我们分类管理这些模块,包的作用就是包含多个模块,但本质依然是模块。新建包后,包内部会自动创建__init__.py文件,这个文件控制着包的导入行为

导入包

导入包与导入模块几种方式类似,例如:

python 复制代码
import 包名.模块名
包名.模块名.功能名()

限制导入

可以在__init__.py文件中添加__all__ = ['模块名'],控制允许导入的模块列表

与导入模块类似__all__只针对from 包名.模块名 import *而对其他方式无效

安装第三方包

第三方(其他人)开发的,Python没有内置,需要先安装才可以导入使用

如何安装?只需要使用Python内置的pip程序即可

在终端中输入如下指令即可通过网络快速安装第三方包:pip install 包名称

提高安装速度

python 复制代码
由于pip是连接的国外的网站进行包的下载,下载速度经常很慢。
我们可以通过如下命令,让其连接国内的网站进行包的安装:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 包名称
# 网站为清华大学提供的一个网站,可供pip程序下载第三方包
3.3 数据类型

Python是一种面向对象的编程语言,所有的数据类型都是类,每个数据值都是类的"实例",并且不需要显式声明变量的类型。

在Python中有6种主要的内置数据类型:数字(Number)、字符串(string)、列表(list)、元组(tuple)、集合(set)和字典(dict)。

变量无类型而数据有类型,可使用 type(变量) 查看数据的类型

3.3.1 数字(Number)

Python中常用的数字类型有两种:整数(int)、浮点(float)。

其中/会永远返回浮点数float,Python只支持双精度的浮点数float,返回int需要用//

int和float转换,类似java的强转 int(float) float(int)

python 复制代码
print(101//10)
print(100%10)
print(int(6.6))
print(float(6))

10
0
6
6.0

算数运算符:

python 复制代码
加减乘取余与java相同
/	除	    直接除返回商
//	整除	返回商的整数部分 
**	指数	a**b 为a的b次方
+=,-=,*=,/=,%=,//=,**=

逻辑运算符

and 逻辑与运算,等价于数学中的"且" a and b 当 a 和 b 两个表达式都为真时,a and b 的结果才为真,否则为假。

or 逻辑或运算,等价于数学中的"或" a or b 当 a 和 b 两个表达式都为假时,a or b 的结果才是假,否则为真。

not 逻辑非运算,等价于数学中的"非" not a 如果 a 为真,那么 not a 的结果为假;如果 a 为假,那么 not a 的结果为真。相当于对 a 取反。

3.3.2 字符串(string)

字符串是最常用的数据类型,需要用 双引号" " 或者 单引号' ' 或者 三引号""" """ 包围起来。

任何类型,都可以通过str(),转换成字符串。

字符串内必须真的是数字,才可以将字符串转换为数字,否则会报错。

字符串连接可以直接使用+

如果字符串本身包含单引号''或者双引号"",可以使用转义符\

字符串可以和数字相互转化,字符串转数字可以用int()或float(),数字转字符串可以用str()

字符串支持下标访问,包括正向索引(正数),和反向索引(负数)

字符串使用find()查找,replace()替换,split()切割

python 复制代码
str1 = "helloworld"
print(str1[5])
print(str1[-4])
print(str1.find('w'))
print(str1.replace('w','W'))
print(str1.split('l'))
w
o
5
helloWorld
['he', '', 'owor', 'd']
3.3.3 列表(list)

线性表这种数据结构我们都比较熟悉,Python中的实现是list,类似于Java中的ArrayList,list中可以放入任意类型的变量:

list初始化可以使用[]:

元素可以直接通过下标访问:

通过append()方法添加元素

通过insert(i,x)方法在指定位置 插入元素

替换元素,可以直接list[i]=x

删除元素,使用remove(x)方法,此处的x是具体的值,而不是下标,且x如果不存在于list,则会报错

python 复制代码
list1=[];
list1.append('hello')
print(list1)
list1.insert(0,'world');
print(list1)
list1.remove('world');
print(list1);
list1[0]='HELLO';
print(list1);

['hello']
['world', 'hello']
['hello']
['HELLO']

列表循环

for循环列表

python 复制代码
names=['北方有佳人','遗世而独立','一顾倾人城','再顾倾人国']
for name in names:
    print(name)

while循环,根据下标循环list

python 复制代码
names=['北方有佳人','遗世而独立','一顾倾人城','再顾倾人国']
len=len(names)
i=0
while i<len:
    print(names[i])
    i=i+1;

用enumerate() 函数可以同时取出位置索引和对应的值:

python 复制代码
    names=['北方有佳人','遗世而独立','一顾倾人城','再顾倾人国']
    for i,v in enumerate(names):
        print(i,v)
3.3.4 元组(tuple)

列表(list)是一种可变的序列类型,元组(tuple)是一种不可变的序列类型,由多个用逗号隔开的值组成:

python 复制代码
t='hello','world'
print(t[0]);
hello
3.3.5 集合(set)

集合(set)是一种可迭代的、无序的、不能包含重复元素的容器类型的数据,类似于Java中的Set。集合的添加用add(),删除用remove()

3.3.6 字典(dict)

字典(dict)是一种key,value类型的数据结构,类似于Java中的Map。

可以直接根据key找到value

添加和更新元素都可以直接通过key

使用pop()删除元素

python 复制代码
dic={"hello":"world","spring":"boot"}
print(dic);
dic['spring']='mvc';
print(dic)
print(dic['hello'])
dic.pop('spring')
print(dic)

{'hello': 'world', 'spring': 'boot'}
{'hello': 'world', 'spring': 'mvc'}
world
dict_keys(['hello', 'spring'])
{'hello': 'world'}

字典遍历

python 复制代码
hero_dict={'吕布':100,'赵云':98,'典韦':96}

# 遍历字典中的元素
for k,v in hero_dict.items():
    print(k,v)

# 遍历字典中的元素
for k in hero_dict:
    print(k,hero_dict[k])

# 遍历keys
for k in hero_dict.keys():
    print(k,hero_dict[k])

# 遍历values
for v in hero_dict.values():
    print(v)
3.4 异常处理

用try/except/finally语句来捕获异常。

python 复制代码
try:
    num=10/0
except Exception as e:
    print(e)
finally:
    print('end')
3.5 类、对象、方法

什么是面向对象

万物皆对象

现实世界的事物都有属性和行为,可在程序中抽离为类来描述现实世界的事物属性和行为

3.5.1 类与对象

使用类封装属性,基于类创建出一个个的对象来使用

创建类的语法

class:关键字,表示要定义类了

类的属性:定义在类中的变量(成员变量)

类的行为:定义在类中的函数(成员方法)

python 复制代码
# 创建类
class 类名称:
    类的属性(成员变量)
    类的行为(成员方法)
    
# 基于类创建对象
对象名 = 类名称()

# 调用
对象名.成员变量
对象名.成员方法()
3.5.2 成员变量和成员方法

成员变量

定义在类内部的变量称之为成员变量,用法与正常变量一致。

成员方法

定义在类内部的函数称之为方法,与函数存在细微区别。

python 复制代码
 # 函数
# 形参可以为0-N个
def 函数名(形参1,形参2,..,形参N):
    函数体

# 方法
# 形参可以为0-N个
# self关键字必须填写
def 方法名(self,形参1,形参2,..,形参N):
    方法体

self关键字在成员方法定义的时候必须填写,表示类对象自身

在方法内部,想要访问类的成员变量,必须使用self

当我们使用对象调用方法的时,self会自动被python传入,虽然在参数列表中,但是传参的时候可以不传。

3.5.3 构造方法

通过传参的形式快速对属性赋值

在类可以使用:init()方法,即构造方法,快速为对象赋值。简化形式:可以省略成员属性定义,但仍可调用

在创建类对象(构造类)的时候,会自动执行,将传入参数自动传递给__init__方法使用。

构造方法也是成员方法,定义时也需要在参数列表中提供:self

变量定义在构造方法内部,如果要成为成员变量,需要用self来表示,例如self.age

使用了构造方法,创建对象时必须传参否则会报错

3.5.4 Python类内置的类方法:

init 构造方法,可用于创建类对象的时候设置初始化行为
str 字符串方法,用于实现类对象转字符串的行为
lt 用于2个类对象进行小于(<)或大于(>)比较
le 用于2个类对象进行小于等于(<=)或大于等于(>=)比较
eq 用于2个类对象进行相等(==)比较

3.6 面向对象

面向对象包含3大主要特性:封装,继承,多态

3.6.1 封装

封装就是隐藏对象的内部细节,外部只管调用就行了。

Python中的变量默认是公开的,可以在外部的类中访问它们,如果想让它们变为私有变量,在变量前加上双双下画线(__)就行了,变量的获取和设置可以通过get()、set()方法。

基本语法:

python 复制代码
私有成员变量:变量名以__开头(2个下划线)
私有成员方法:方法名以__开头(2个下划线)
3.6.2 继承

一个类继承另外一个类的所有成员变量和成员方法(不含私有)

多继承和单继承

一个类也可以继承多个类,也可以继承一个类

多个父类中,如果有同名的成员,默认以继承顺序(从左到右)为优先级。即:后继承的被先继承的覆盖

基本语法:

python 复制代码
class 类名(父类1,父类2,...,父类N):
    类内容体

重写

子类继承父类的成员属性和成员方法后,如果对其"不满意",那么可以进行重写。即:在子类中重新定义同名的属性或方法。

一旦重写父类成员,那么类对象调用成员的时候,就会调用重写后的新成员

如果需要使用被复写的父类的成员,只能在子类内通过如下方式调用父类的同名成员:

方式一:使用父类名调用

使用成员变量:父类名.成员变量

使用成员方法:父类名.成员方法(self)

方式二:使用super()调用

使用成员变量:super().成员变量

使用成员方法:super().成员方法()

3.6.3 多态

多种状态,即完成某个行为时,使用不同的对象会得到不同的状态

抽象类(接口)

抽象类就好比定义一个标准,包含了一些抽象的方法,要求子类必须实现

抽象类:包含抽象方法的类

抽象方法:没有具体实现的方法(只含pass)称之为抽象方法

pass是占位语句,用来保证函数(方法)或类定义的完整性,表示无内容,空的意思

多用于做顶层设计(设计标准),以便子类做具体实现。是对子类的一种软性约束,要求子类必须复写(实现)父类的一些方法

并配合多态使用,获得不同的工作状态。

3.7 文件操作

文件操作主要包括打开、关闭、读、写等操作文件的打开

基本格式

在Python,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件

基本语法:

open(name, mode, encoding)

python 复制代码
# name:是要打开的目标文件名的字符串(可以包含文件所在的具体路径)。
# mode:设置打开文件的模式(访问模式):只读、写入、追加等。
# encoding:编码格式(推荐使用UTF-8)

打开模式

文件常用的三种基础访问模式,可通过mode指定。

r->read(读取),w->write(写入),a->append(追加)

r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。

w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,原有内容会被删除。如果该文件不存在,创建新文件。

a 打开一个文件用于追加。如果该文件已存在,新的内容将会被写入到已有内容之后。 如果该文件不存在,创建新文件进行写入。

f = open("./source.log", "r", encoding="UTF-8")

文件的读取

read(num) 读取指定长度字节 不指定num读取文件全部

readline() 读取一行

readlines() 读取全部行,返回列表

for line in 文件对象 for循环文件行,一次循环得到一行数据

close() 关闭文件对象

with open() as f 通过with open语法打开文件,可以自动关闭

每次读取会从上一次读取结束的位置开始,每次open()中的内容只能被读取一次

文件的写入使用示例:

python 复制代码
f = open("C:/code/test.txt", "w")
# 文件如果不存在,使用"w"模式,会创建新文件
# 文件如果存在,使用"w"模式,会将原有内容清空
# 2.文件写入
f.write('hello world')
# 3. 内容刷新
f.flush()

直接调用write,内容并未真正写入文件,而是会积攒在程序的内存中,称之为缓冲区

当调用flush的时候,内容会真正写入文件

close()方法,附带flush()方法的功能

这样做是避免频繁的操作硬盘,导致效率下降(攒一堆,一次性写磁盘)

文件的追加

使用w模式,每次写入会将原有内容清空,写入新内容

使用a模式,文件不存在会创建文件,文件存在会在最后追加内容写入文件

使用示例:

python 复制代码
f = open("C:/code/test.txt", "a")
# 2.文件写入
f.write('study')
# 3. 内容刷新
f.flush()
3.8 变量的类型注解

Python中类型注解仅仅起到提示作用,没有其他语言那么严格

Python解释器不会根据类型注解对数值做验证和判断,无法对应上也不会导致错误

语法格式

变量名: 数据类型 = 数值

python 复制代码
var_1: int = 10 
var_2: bool = True  
# 定义学生类
class Student:
    pass

stu: Student = Student()  # 学生类类型注解
my_list: list = [1, 4, 7]
my_list: list[int] = [2, 5, 8]  # 限定数据类型为int
my_tuple: tuple[str, int, bool] = ("hello", 111, False)
my_dict: dict[str, int] = {"age": 13}

函数的类型注解

def 函数方法名(形参名1:类型,形参名2:类型) -> 返回值类型:

函数体

python 复制代码
def add(x: int, y: int) -> int:
    return x + y

Union类型

联合类型注解,在变量注解、函数(方法)形参和返回值注解中均可使用

需要导包使用

当数据类型不唯一时基本格式无法满足要求,此时便可使用Union类型

使用示例,Union[类型,类型]:

python 复制代码
from typing import Union
# 数据为字符串和整数
my_list: list[Union[str, int]] = [66, "hello", 88, "world"]
# 键为字符串,值为字符串和整数
my_dict: dict[str, Union[str, int]] = {"name": "zhangsan", "age": 18}
python 复制代码
from typing import Union

# 接收字符串或整数,返回字符串或整数
def func(data: Union[int, str]) -> Union[int, str]:
    pass
3.9 操作MySQL

在Python中,通过使用第三方库:pymysql,完成对MySQL数据库的操作。

安装指令:pip install pymysql

pymysql在执行数据插入或其它产生数据更改的SQL语句时,默认是需要提交更改的,即,需要通过代码"确认"这种更改行为。

如果不想手动commit确认,可以在构建连接对象的时候,设置自动commit的属性。

查询后,使用游标对象.fetchall()可得到全部的查询结果封装入嵌套元组内

可使用游标对象.execute()执行SQL语句

3.9.1 操作步骤

导包->建立连接->执行操作->关闭连接:

python 复制代码
# 导包
from pymysql import Connection
# 建立连接
conn = Connection(
    host='10.100.56.51',  # 主机名或IP地址
    port=3306,  # 端口号,默认3306
    user='root',  # MySQL账号
    password='123456',  # MySQL密码
    autocommit=True  # 设置自动提交(commit)
)
# 执行操作
print(conn.get_server_info())
# 关闭连接
conn.close()
3.9.2 建表

将执行操作改为建表SQL

python 复制代码
"""
建表SQL
"""
# 获取游标对象(用于操作数据库)
cursor = conn.cursor()
# 选择要操作的数据库
conn.select_db("db_study_system")
# 使用游标对象,执行建表sql语句
cursor.execute("CREATE TABLE student(id int,name VARCHAR(64),age int,score int)")
3.9.3 单条插入SQL
python 复制代码
"""
单条插入SQL
"""
# 获取游标对象(用于操作数据库)
cursor = conn.cursor()
# 选择要操作的数据库
conn.select_db("db_study_system")
cursor.execute("insert into student values(6,'张三',18,99)")
conn.commit();
3.9.4 批量插入

批量插入使用executemany方法,values定义使用[()]或[[]]

python 复制代码
"""
批量插入SQL
"""
# 获取游标对象(用于操作数据库)
cursor = conn.cursor()
# 选择要操作的数据库
conn.select_db("db_study_system")
# 使用游标对象,执行sql语句
sql = "insert into student(id,name,age,score) values(%s,%s,%s,%s)";
values=[(4,'张三',18,99),(5,'张三',18,99)];
cursor.executemany(sql,values)
# 提交事务
conn.commit();
3.9.5 查询SQL
python 复制代码
"""
查询SQL
"""
# 获取游标对象(用于操作数据库)
cursor = conn.cursor()
# 选择要操作的数据库
conn.select_db("db_study_system")
# 使用游标对象,执行sql语句
cursor.execute("SELECT * FROM student where name ='张三'")
# 获取查询结果,返回元组对象
results: tuple = cursor.fetchall()
for result in results:
    print(result)
3.9.6 更新SQL
python 复制代码
"""
更新SQL
"""
# 获取游标对象(用于操作数据库)
cursor = conn.cursor()
# 选择要操作的数据库
conn.select_db("db_study_system")
# 使用游标对象,执行sql语句
cursor.execute("UPDATE student set name ='李四' where id = 4")
conn.commit();
3.9.7 删除SQL
python 复制代码
"""
删除SQL
"""
# 获取游标对象(用于操作数据库)
cursor = conn.cursor()
# 选择要操作的数据库
conn.select_db("db_study_system")
# 使用游标对象,执行sql语句
cursor.execute("DELETE FROM  student where id IS NULL")
conn.commit();
3.10 操作mongodb

pymongo的安装

使用pip安装:pip install pymongo

3.10.1 操作步骤

导包->建立连接->执行操作->关闭连接:

python 复制代码
import pymongo
MONGO_URL_BSS = "mongodb://root:123456@10.100.56.51:27019/study?authSource=admin"
#数据库
BSS_DATABASE = "study"

CLIENT = pymongo.MongoClient(MONGO_URL_BSS)
db = CLIENT.get_database(BSS_DATABASE);
collection = db.get_collection("Student");
#执行操作
print(collection.find_one({"name": name}));
CLIENT.close();
3.10.2 增删改查
python 复制代码
import pymongo
MONGO_URL_BSS = "mongodb://root:123456@10.100.56.51:27019/study?authSource=admin"
#数据库
BSS_DATABASE = "study"

CLIENT = pymongo.MongoClient(MONGO_URL_BSS)
db = CLIENT.get_database(BSS_DATABASE);
collection = db.get_collection("Student");

def getStudent(name):
    object = collection.find_one({"name": name});
    return object;

def updateStudent(name,address):
    query = {"name": name}
    update = {"$set": {"address": address}}
    collection.update_one(query,update);
    return;

def deleteStudent(name):
    query = {"name": name}
    collection.delete_one(query);
    return;

def addStudent(student):
    collection.insert_one(student);

if __name__ == '__main__':
    print(getStudent('zhangsan1'))
    updateStudent('zhangsan1','苏州')
    print(getStudent('zhangsan1'))
    student={'name': 'zhangsan111', 'age': 4, 'address': '西安', 'books': [{'name': '人性的缺点', 'author': '卡耐基'}]};
    addStudent(student);
    print(getStudent('zhangsan111'))
    deleteStudent('zhangsan111');
    print(getStudent('zhangsan111'))
    CLIENT.close();
3.11 发送http请求

requests模块为python的第三方库,主要用于处理HTTP

安装requests模块

pip install requests

3.11.1 发送post请求 json格式
python 复制代码
def request_post():
    headers = {
        'Content-Type': 'application/json',
        'access_token':'TGT-101787-I5XN9XvVwIrbaPPoJbcVhKYarNJTH034GrXhom6DpZB3jPJhWb'
    }
	
    data = {
    		"goodsId":"6596da7a7dd3a945ebdc057d","streamNo":"web_saas1704423400890818242","partnerCode":"UKSAS"
    }
    url = "url"
    resp = requests.post(url, headers=headers, json=data,timeout=(10,10))
    print(resp.content)
    return resp;
3.11.2 发送post请求 form-data格式
python 复制代码
def request_post2():
    headers = {
        'Content-Type': 'application/x-www-form-urlencoded',
        'access_token':'TGT-101787-I5XN9XvVwIrbaPPoJbcVhKYarNJTH034GrXhom6DpZB3jPJhWb'
    }
	
    data = {
    		"id":"5a6afd864d9b23696f7c3cd3","streamNo":"web_saas1704423400890818242"
    }
    url = "url"
    resp = requests.post(url, headers=headers, data=data,timeout=(10,10))
    print(resp.content)
    return resp;
3.11.2 发送get请求
python 复制代码
def request_post3():
    headers = {
        'Content-Type': 'application/x-www-form-urlencoded',
        'access_token':'TGT-101787-I5XN9XvVwIrbaPPoJbcVhKYarNJTH034GrXhom6DpZB3jPJhWb'
    }
	
    url = "url"
    resp = requests.get(url, headers=headers, timeout=(10,10))
    print(resp.content)
    return resp;

参考
Python快速入门,看这一篇就够了!
【Python】学习汇总(附思维导图)

相关推荐
denghai邓海13 分钟前
红黑树删除之向上调整
python·b+树
HC1825808583217 分钟前
“倒时差”用英语怎么说?生活英语口语学习柯桥外语培训
学习·生活
学习路上_write21 分钟前
FPGA/Verilog,Quartus环境下if-else语句和case语句RT视图对比/学习记录
单片机·嵌入式硬件·qt·学习·fpga开发·github·硬件工程
非概念27 分钟前
stm32学习笔记----51单片机和stm32单片机的区别
笔记·stm32·单片机·学习·51单片机
封步宇AIGC39 分钟前
量化交易系统开发-实时行情自动化交易-3.4.1.2.A股交易数据
人工智能·python·机器学习·数据挖掘
何曾参静谧39 分钟前
「Py」Python基础篇 之 Python都可以做哪些自动化?
开发语言·python·自动化
Prejudices43 分钟前
C++如何调用Python脚本
开发语言·c++·python
我狠狠地刷刷刷刷刷1 小时前
中文分词模拟器
开发语言·python·算法
Jam-Young1 小时前
Python的装饰器
开发语言·python
Mr.咕咕1 小时前
Django 搭建数据管理web——商品管理
前端·python·django