![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python
文章平均质量分 55
蜻蜓轻停青亭倾听听雨声
这个作者很懒,什么都没留下…
展开
-
5、Python-循环执行多次sql语句
【代码】5、Python-循环执行多次sql语句。原创 2023-03-29 14:48:21 · 1277 阅读 · 0 评论 -
4、Python-数据库连接池
数据库连接的昂贵之处:创建并维持网络连接。原创 2023-03-29 14:13:07 · 443 阅读 · 0 评论 -
62.Python之列表推导式
官方文档的解释:对序列或可迭代对象中的每个元素应用某种操作,用生成的结果创建新的列表;或用满足特定条件的元素创建子序列。例1:1个for循环且没有判断条件# 普通for循环a = []for i in range(3): a.append(i*2)print(f'a={a}')# 使用列表推导式b = [i*2 for i in range(3)]print(f'b={b}')例2:1个for循环且有判断条件# 普通for循环a = []for i in range(3原创 2021-09-30 17:33:43 · 266 阅读 · 0 评论 -
61.Python之位运算
二进制:通常我们说的整数是十进制,由0123456789组成二进制的数则是由01组成比如将整数123转换成二进制的123除以2,等于61余161除以2,等于30余130除以2,等于15余015除以2,等于7余17除以2,等于3余13除以2,等于1余11除以2,余1将上面获得余数从底向上填写,即:1111011,这个就是十进制123转成二进制的数将1111011转成十进制,从右往左取数:12^0=112^1=202^2=012^3=812^4=1612^5=321*2原创 2021-09-30 17:29:20 · 349 阅读 · 0 评论 -
60.Python之闭包
在一个嵌套函数内,外函数返回了内函数,且内函数使用了外函数中定义的局部变量,这个就叫做闭包例:# 定义一个外函数def outer(): a = 1 # 定义一个内函数 def inner(): # nonlocal关键字使外函数中定义的局部变量可以在内函数中使用 nonlocal a a += 1 print(a) # 外函数返回内函数 return innerr = outer() #.原创 2021-09-28 14:55:40 · 103 阅读 · 0 评论 -
59.Python之回调函数
一个函数A中的参数是另一个函数B,并在A函数中使用了传递进来的函数B,那这个函数B就叫做回调函数即把一个函数作为形参进行传递,作为回调函数例:# 定义一个函数,里面的形参是一个函数def t(f): f()# 回调函数def p(): print('测试一下')t(p)运行后正常打印:测试一下在实际运用中,比如一个函数中传递另一个函数以及它所需的变量# 定义一个函数,里面的形参是一个函数以及它所需的变量def t(x,y,f): return f(x,.原创 2021-09-28 14:52:18 · 146 阅读 · 0 评论 -
58.python之关键字nonlocal
作用:在使外函数中定义的局部变量可以在内函数中引用并修改例1:外函数中定义的变量可以正常在内涵数中引用# 定义一个外函数def outer(): # a是局部变量 a = 2 # 定义一个内函数 def inner(): print(a) inner()outer()运行上面的可以正常返回2例2:在内函数中对外函数中定义的局部变量进行修改,会报错# 定义一个外函数def outer(): # a是局部变量 a原创 2021-09-28 11:35:26 · 122 阅读 · 0 评论 -
57.SQL语句循环执行多次,executeMany()
循环执行sql语句游标对象中得executeMany()函数可以反复执行一条SQL语句sql = "insert into my_class(id,name,class) VALUES(%s,%s,%s)" data = [ [1, "张三" , "A" ] , [2, "李四" , "B" ] ] cursor.executemany(sql, data)例如:import mysql.connector.poolingconfig = { "host" :原创 2021-09-06 17:33:13 · 1363 阅读 · 0 评论 -
56.python之数据库连接池
数据库连接是一种关键的、有限的、昂贵的资源,在并发执行的应用程序中体现得尤为突出数据连接池(Connection Pool)预先创建出一些数据库连接,然后缓存起来,避免了程序语言反复创建和销毁连接昂贵代价数据库连接池得语法:import mysql.connector.pooling# 数据库连接信息config = {……}# 创建数据库连接池pool = mysql.connector.pooling.MySQLConnectionPool( # 连接数据库 **con.原创 2021-09-06 17:30:58 · 399 阅读 · 0 评论 -
55.抵御SQL攻击(SQL预编译机制)
SQL注入的危害由于SQL语句是解释型语言,所以在拼接SQL语句的时候,容易被注入恶意的SQL语句比如下面的SQL语句:id = "1 OR 1=1" sql = "delete from score where id=" + id相当于sql = "delete from score where id=1 OR 1=1"or后面的语句为True,也就是说where后面的始终都是True,整个score表会被删除例如:下面的执行后,整个表中数据都会被删除import mysql.原创 2021-09-06 17:15:09 · 173 阅读 · 0 评论 -
54.python之连接数据库MySQL Connector
MySQL Connector是mysql官方的驱动模块,兼容性特别好一些第三方模块对MySQL8.0的兼容性不是很好,可能连接不上最新版的MySQL安装方式一:https://dev.mysql.com/downloads/connector/python/下载好后双击安装方式二:下载第三方包pip install mysql-connector连接数据库方式一:import mysql.connector con = mysql.connector.connect(原创 2021-09-06 17:08:16 · 726 阅读 · 1 评论 -
53.python之正则表达式
正则表达式 通过匹配规则来获取或者验证字符串中的数据应用场景:判断一个字符串是否符合规则取出制定数据爬虫核心的技术彩票网站匹配彩票信息匹配字符串的需要条件:正则表达式模块-re匹配的规则,即正则表达式被匹配的字符串正则表达式中特殊字符例:import rea = 'my name is zs,age is 18'print(f'字符串:{a}')# 匹配字符串开头和结尾# 匹配到则返回列表(列表中有匹配到的字符串),匹配不到则显示空列表b1 = re.fi原创 2021-09-01 13:30:38 · 85 阅读 · 0 评论 -
52.python之创建虚拟环境
Python中的虚拟环境Python 应用经常需要使用一些包,第三方包或者模块,有时需要依赖特定的包或者库的版本,所以不能有一个能适应所有 Python应用的软件环境,很多时候不同的 Python 应用所依赖的版本是冲突的,满足了其中一个,另一个则无法运行,解决这一问题的方法是 虚拟环境。虚拟环境是一个包含了特定 Python 解析器以及一些软件包的自包含目录,不同的应用程序可以使用不同的虚拟环境,从而解决了依赖冲突问题,而且虚拟环境中只需要安装应用相关的包或者模块,可以给部署提供便利虚拟环境工原创 2021-08-25 17:25:23 · 324 阅读 · 0 评论 -
51.python之常用内置函数
abs:返回数字的绝对值,参数:Number,返回值:正数字print(abs(-1))print(abs(1))all:判断列表内容是否全是true,参数:List,返回值:boolprint(all([1, 'a', True]))print(all([1, 'a', False]))help:打印对象的用法a = [1, 'a']print(help(a))enumerate:迭代时记录索引,参数:可迭代对象a = ['a', 'b', 'c']for i in enume原创 2021-08-25 17:20:27 · 105 阅读 · 0 评论 -
50.python之日志 logging模块
日志用来记录程序行为可以记录一些重要信息,比如哪里报错,以及报错原因等日志等级(由低到高):debug:在开发时查看一些输出信息是否正确,可以替代print函数info:消息类信息,记录一些程序的行为warnning:警告,提示程序可能存在的潜在风险error:业务中出现错误,比如异常critical:比error更高级别的错误logging模块的使用使用logging.basicConfig配置基本设置参数:level:日志记录的最低等级,比如level=logging.原创 2021-08-24 17:20:24 · 255 阅读 · 2 评论 -
49.python之随机模块 random使用
random.random:随机返回一个0到1之间的浮点数random.uniform:随机返回一个a到b之间的浮点数random.randint:随机返回一个a到b之间的整数random.choice:随机返回对象中一个元素,支持字符串、列表、元组random.sample:随机返回对象中指定个数的元素,支持字符串、列表、元组,但返回的都是列表random.randrange:获取区间内的一个随机数,有3个参数,第一个参数是起始数(包含起始数),第二个是终止数(终止数不包含),第三个是步长.原创 2021-08-24 17:11:00 · 161 阅读 · 0 评论 -
48.python之迭代器和生成器
迭代器一般的数据都是一次性写入到内存中,而迭代器是按需加载,有一点内容就写入内存中,此时可以立即使用内存中的数据进行逻辑处理,这样就不需要等待所有的数据都写入内存中后才进行逻辑处理,提高了使用的效率若是数据中内容很大时,相比较一次性将数据写入内存中,迭代器使用一个数据就放入内存中的的方式更加高效迭代器使用生成一个迭代器对象用法:iter(iterable)参数:iterable:可迭代的数据类型,包含字符串、列表、元组、字典、集合等使用迭代器对象返回一个迭代器中数据用法:原创 2021-08-24 17:09:00 · 135 阅读 · 0 评论 -
47.python之魔法函数 filter、map、reduce
filter用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。返回一个迭代器对象用法:filter(func,list)参数:func:对list每个item进行条件过滤的定义list:需要过滤的列表例1:使用匿名函数a = [1, 3, 5]b = filter(lambda x: x < 5, a)print(list(b))例2:使用普通函数a = [1, 3, 5]def test(item): if item < 5原创 2021-08-24 17:04:26 · 110 阅读 · 0 评论 -
46.python之异步
异步一般代码是从上而下执行的,比如有3个打印语句,正常执行是从第一个到最后一个按照顺序打印出来,也就是后面的打印语句会等待前面的打印语句执行完后在执行,这个是同步执行,同步意味着有序执行;而异步就是,后面的打印语句不会等待前面的执行完后再执行,也就是说异步不会阻塞其他任务执行,异步意味着无序执行异步与多线程多进程:异步是轻量级的线程,可以叫做协程多进程和多线程无法获取函数的返回值,但是异步可以获取函数的返回值,进程池和线程池可以说是有异步的效果,它们可以获取函数的返回值主进程是异步才可以使原创 2021-08-23 16:49:13 · 635 阅读 · 0 评论 -
45.python之线程锁
线程锁前面在创建多线程的时候发现,线程的执行顺序有时会变乱,或者2个打印语句会打印在同一行,要想多线程不乱,可以使用线程锁加上线程锁后,同一时间只会执行一个线程,也就是线程独占资源要注意,锁不能滥用,若是因为某些原因没有解锁,就会造成死锁的现象,这样后面的线程也就无法执行。模块threading中的Lock用法:import threadinglock = threading.Lock()线程锁的加锁和解锁例1:不加锁import threadingimport timef原创 2021-08-20 18:02:38 · 326 阅读 · 0 评论 -
44.python之线程池
线程池普通多线程方案会使用“即时创建,即时销毁”的策略。尽管与创建进程相比,创建线程的时间已经大大的缩短,但是如果提交给线程的任务是执行时间较短,而且执行次数极其频繁,那么服务器将处于不停的创建线程,销毁线程的状态。一个线程的运行时间可以分为3部分:线程的启动时间、线程体的运行时间和线程的销毁时间。在多线程处理的情景中,如果线程不能被重用,就意味着每次创建都需要经过启动、销毁和运行3个过程。这必然会增加系统相应的时间,降低了效率。使用线程池,线程预先被创建并放入线程池中,同时处理完当前任务之后并不销原创 2021-08-20 17:57:44 · 1459 阅读 · 0 评论 -
43.python之创建线程
概念线程线程是CPU调度和分派的基本单位,通过进程的资源来执行任务它可与同属一个进程的其他的线程共享进程所拥有的全部资源是完成某个特定功能的一段代码,但线程的开销要比进程小的多。一个Python程序至少有一个线程,那就是Python的主线程,程序启动由Python解释器负责创建主线程,程序结束时由Python解释器来负责结束主线程。线程与进程:进程提供线程执行程序的前置要求,线程在充足的资源配备下,去执行程序一个核心中在多个时间片上同时处理线程的行为,叫做并发执行多进程在不同内核跑道原创 2021-08-20 17:50:46 · 99 阅读 · 0 评论 -
42.python之进程间的通信-队列
进程的通信–队列2个进程之间的通信主要依赖队列,队列支持发送消息和接收消息队列的创建:模块multiprocessing的Queue类from multiprocessing import Queueq = Queue(mac_count)参数:mac_count:队列最大可以传入多少消息,默认不传,表示无限长度队列发送消息和接收消息例:from multiprocessing import Queuefrom multiprocessing import Processi原创 2021-08-19 17:58:16 · 131 阅读 · 0 评论 -
41.python之进程锁
进程锁多个进程之间虽然是独立的,但仅限于内存和运算,如果涉及到其它一些资源,就可能存在竞争问题,当多个进程使用同一份数据资源的时候,就会引发数据安全或顺序混乱问题,添加进程锁则可以解决此类问题。进程锁,在同一时间执行一个进程要注意,锁不能滥用,若是因为某些原因没有解锁,就会造成死锁的现象,这样后面的进程也就无法执行。进程锁的创建:模块multiprocessing的Manager类from multiprocessing import Managermanager = Manager()l原创 2021-08-19 17:55:20 · 566 阅读 · 0 评论 -
40.python之进程池
进程池进程创建太多会造成资源消耗过大,为了避免出现这种情况,就需要固定进程的数量,此时就需要进程池。可以把进程池当做一个池子,在这个池子里提前创建好一定数量的进程,进程池中的进程会伴随进程池一起被创建。每个实例化对象当使用完成时,都会被内存管家回收,普通的进程也会伴随着创建与关闭的过程,而这样创建和关闭的过程是会消耗一定性能的;但是进程池中的进程经过一次创建后就不会关闭,可以重复使用,这样也就避免了创建与关闭的消耗。进程池中的进程是随着进程池的关闭而关闭。当有任务时,会先判断进程池中是否有空闲的进原创 2021-08-19 17:50:29 · 1008 阅读 · 2 评论 -
39.python之创建进程
进程概念进程进程是程序的一次执行过程,是一个动态概念,是程序在执行过程中分配和管理资源的基本单位,每一个进程都有一个自己的地址空间,至少有 5种基本状态,它们是:初始态,执行态,等待状态,就绪状态,终止状态。例如每打开一个软件,或者每执行一个python脚本都是启动一个进程启动进程会占用cpu和内存多进程就是同时启动多个软件(进程)例如手机系统启动多个软件,手机系统属于主进程,启动的多个软件属于子进程多个进程同时在执行程序时,他们之间互不干扰,各自执行自己的业务逻辑进程的创建模块原创 2021-08-19 17:43:37 · 2204 阅读 · 0 评论 -
38.python之yaml文件的读取和写入
第三方包pyyaml安装:pip install pyyaml一组数据读写读取一组数据:yaml.load()写一组数据:yaml.dump()例:import yamlimport oscurrent_path = os.getcwd()path = os.path.join(current_path, 'b.yaml')aproject = {'name': 'Silenthand Olleander', 'race': '哈哈哈黑',原创 2021-08-18 15:51:31 · 1646 阅读 · 0 评论 -
37.yaml基本语法
基本语法大小写敏感使用缩进表示层级关系缩进不允许使用tab,只允许空格缩进的空格数不重要,只要相同层级的元素左对齐即可'#'表示注释数据类型:对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)纯量:单个的、不可再分的值纯量字符串布尔值整数浮点数Null时间日期boolean: - TRUE #true,True都可原创 2021-08-18 15:19:51 · 106 阅读 · 0 评论 -
36.python之序列化和反序列化
定义序列化将对象信息或者数据结构信息,通过一定规则进行转换,可以达到文件存储或者网络传输的效果。反序列化将通过序列化规则生成的字符串转化成原始的数据类型可序列化的数据类型numberstrlisttupledict序列化模块:json模块是一个通用的模块,即在所有的编程语言中都有json模块,并且序列化和反序列化的规则是统一的。json.dumps,参数解析:sort_keys=True:sort_keys是告诉编码器按照字典排序(a到z)输出indent=4:i原创 2021-08-18 14:37:07 · 249 阅读 · 0 评论 -
35.python之文件读取和写入
内置函数open获取文件对象生成文件对象,进行创建、读写操作用法:open(path,mode)参数:path:文件路径mode:操作模式返回值:文件对象文件读取文件读取操作模式:文件对象的操作方法之读:创建文件b.txt,放在当前目录下,内容如下你好 Pythonhello world例1:使用r模式import os# 获取当前路径current_path = os.getcwd()# print(current_path)# 获取当前目录下的文件原创 2021-08-18 10:42:11 · 269 阅读 · 0 评论 -
34.python之sys库
sys包中常用方法:例:import sys# 程序外部获取参数print(sys.argv)common = sys.argv[1]if common == 'modules': # Python启动时加载的模块 print(sys.modules)elif common == 'path': # 返回当前Python的环境路径 print(f'当前路径:{sys.path}')elif common == 'code': # 获取系统编码原创 2021-08-09 13:53:00 · 220 阅读 · 0 评论 -
33.python之os库
import os:可以直接调用的函数例:import os# 获取当前路径current_path = os.getcwd()print(f'当前路径:{current_path}')# 使用绝对路径:在当前路径下创建一个新的文件夹test3,若是此文件夹已存在,会报错# new_path = '%s/test3/a' % current_path# os.makedirs(new_path)# 使用相对路径创建新文件夹#os.makedirs('test3/a')# 返原创 2021-08-09 13:49:22 · 106 阅读 · 0 评论 -
32.python之time模块
time模块简介时间处理,转换时间格式生成时间戳,函数time获取本地时间,函数localtime暂停函数sleep1.生成时间戳,time函数时间戳:1970年1月1日00时00分00秒至今的总毫秒(秒)数timestamp:表示时间戳float:时间戳类型是float用法:import timetime.time()返回值:秒级别的浮点类型返回值乘以1000可以获得毫秒级时间戳例:import time# 获取当前时间戳now = time.time()原创 2021-08-09 13:46:33 · 250 阅读 · 0 评论 -
31.python之时间包datetime
时间包:datetime日期和时间的结合体:date+time获取当前时间获取时间间隔将时间对象转成时间字符串将字符串转成时间类型时间戳与时间类型相互转换1.获取当前时间:datetime模块例:import datetime# 获取当前时间now_time = datetime.datetime.now()print(now_time)或者:from datetime import datetimenow_time = datetime.now()print(no原创 2021-08-09 13:39:30 · 209 阅读 · 0 评论 -
30.python之模块和包
什么是包就是一个文件夹,里面有py文件和子包(子文件夹)在包中可以被调用的py文件,叫做模块init.py是每个包中必有的文件,相当于包的身份证创建一个包:包名要明确功能,方便使用包的层次要分明选中项目根目录,右击:包的导入import将Python中的某个包(或模块),导入到当前py文件中用法:import package参数:package:被导入的包名会拿到对应包下__init__中的功能或当前模块下的功能例:获取对应包下__init__中的功能创原创 2021-08-09 13:33:29 · 90 阅读 · 0 评论 -
29.python之断言assert
断言assert用于判断一个表达式,当表达式为false时触发异常用法:assert expression,message参数:expression:表达式,一般是判断相等,或者判断某种数据类型的布尔判断语句message:具体错误信息,非必填无返回值常用断言方式:assert x :判断X为真assert not x :判断x不为真assert a==b :判断a等于bassert a!=b :判断a不等于bassert a in b :判断b包含a例1:有mes原创 2021-08-03 17:55:37 · 439 阅读 · 0 评论 -
28.python之自定义异常
自定义异常函数raise当出现异常情况时,自定义抛出的报错信息信息将以报错的形式抛出用法:raise 异常类型(message)参数:message:错误信息无返回值例1:def test(a, b): if b == 0: raise ZeroDivisionError('除数不能为0') return a / bnumber = test(1, 0)print(number)结果:例2:def test(a, b): i原创 2021-08-03 17:48:30 · 229 阅读 · 0 评论 -
27.python之异常
异常就是错误异常会导致程序崩溃并停止运行异常处理:能监控并捕获到异常,对异常部位进行处理,使程序可以继续正常运行例:a = 1 / 0print(a)结果:抛出异常ZeroDivisionError,表示除数不能为0语法:try: <代码块1> # 检查并被保护的业务代码except <异常类型>: <代码块2> # 代码块1出现错误后执行的代码注:try语句中发现错误后就开始进入异常处理,try中的错误语句后面原创 2021-08-03 17:45:12 · 93 阅读 · 0 评论 -
26.python之类的内置函数
__str__函数若定义该函数,当print当前实例化对象时,会返回该函数的return信息用法:def __str__(self): return str无需传参一般返回该类的描述信息例:class Test(): def __str__(self): return '这是一个类't = Test()print(t)结果:__getattr__函数当调用的属性不存在时,会返回该方法定义的信息用法:def __getattr__原创 2021-08-02 17:42:37 · 210 阅读 · 0 评论 -
25.python之类的继承和多态
继承:被继承的类是父类(基类),继承的类是子类通过继承基类来获取基类的功能子类有父类所有的属性和方法父类没有子类独有的属性和方法自定义的类默认继承object类用法:定义子类时,将父类传入子类参数内子类实例化,可以调用自己独有的和父类的属性和方法父类无法调用子类的属性和方法例:# 父类class Parent(): def __init__(self, name = '张三'): self.name = name def p1(self):原创 2021-08-02 17:36:47 · 89 阅读 · 0 评论