python
贵沫末
这个作者很懒,什么都没留下…
展开
-
python基础——flask框架的request对象
flask框架的request对象一个请求对象中包含数据的属性一般都是dict类型。如:request.args 查询参数,url路径中使用?分隔符的查询参数request.form 表单参数,一般是post请求方法中包含的数据request.headers 请求头request.cookies cookie数据request.files 上传的文件request.method 请求的方法,且大写字母表示的request.url 完整的请求路径request.base_url 去掉get原创 2021-02-22 18:17:58 · 36 阅读 · 0 评论 -
python基础——flask日志使用
flask日志使用1.编辑service.pyfrom flask import Flaskimport loggingfrom ops import test# 在创建 app 之前将 log 级别重置为debug,让其线上 info 日志级别logging.basicConfig(level=logging.DEBUG)app = Flask(__name__)@app.route('/')def hello_world(): app.logger.info('info原创 2021-02-22 17:52:17 · 49 阅读 · 0 评论 -
python基础——url_for反向解析
url_for反向解析在我们的程序中,可能需要用到别的路由地址,这个时候可以通过url_for(路由蓝图.路由方法,路由参数=路由值)来反向获取路由地址from flask import Blueprintfrom flask import url_forblue = Blueprint('card_blue', __name__)@blue.route('/add_card/<bankname>', methods=['GET'])def add_card(bankname)原创 2021-02-22 17:41:26 · 34 阅读 · 0 评论 -
python基础——路由规则与请求方法
路由规则与请求方法1.路由的path中的参数# 类似java中@Pathvariable注解@app.route('/find/<[converter:]变量名>', methods=['GET'])def find(变量名): return ""# converter是参数的转换器,一般是指定的类型,如string,int,float,path,uuid,any# 其中any()比较特殊,可以指定任意的类型转换器,如<any(int, string, uuid): word原创 2021-02-22 17:16:36 · 17 阅读 · 0 评论 -
python基础——Dao层编写
Dao层编写一、创建dao包,在__init__.py中编写代码:import pymysqlfrom pymysql.cursors import DictCursorCONFIG = { 'host': '127.0.0.1', 'port': 3306, 'user': 'root', 'password': 'root', 'db': 'bms', 'charset': 'utf8', 'cursorclass': DictCurso原创 2021-02-22 16:43:59 · 31 阅读 · 0 评论 -
python基础——flask_blueprint使用
flask_blueprint使用由于项目开发是一个非常耗时间和精力的工程,如果我们将所有的Flask请求方法都写在同一个文件下的话,非常不便于我们代码管理和后期功能代码的添加。如下示例:我们在一个文件中写入多个路由,这会使代码维护变得困难。如果我们想把每个路由分模块进行开发,可以使用blueprint模块一、导入blueprint包:pip install flask-blueprint二、在views包下创建多个模块文件,我们以bank.py为例from flask import Blu原创 2021-02-22 16:15:25 · 56 阅读 · 1 评论 -
python基础——flask中渲染模板
flask中渲染模板1、在python文件同级目录下创建文件夹:templates2、在templates文件夹下创建一个html文件<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>{{ title }}的页面</title></head><body> <h2>{{ title原创 2021-02-22 13:42:25 · 28 阅读 · 1 评论 -
python基础——Flask框架的应用
Flask框架的应用1.安装环境:pip install flaskfrom flask import Flask# 创建Flask对象-Httpd WEB服务对象app = Flask(__name__) # __name__ 可以是任意的小写字母,表示Flask应用对象名称# 声明WEB服务的请求资源(指定资源访问的路由)# RESTful 设计风格关于资源的动作:'GET':获取数据, 'POST':更新数据, 'PUT':添加数据, 'DELETE':删除数据@app.rout原创 2021-02-22 13:11:23 · 14 阅读 · 0 评论 -
python基础——使用python实现WSGI静态资源服务(简单实现Web服务)
使用python实现WSGI静态资源服务(简单实现Web服务)from wsgiref.simple_server import make_serverimport osdef app(env, make_response): # 处理业务最核心的函数 # for k, v in env.items(): # print(k, ':', v) # 获取请求路径 requestPath = env['PATH_INFO'] headers =原创 2021-02-22 01:08:30 · 20 阅读 · 0 评论 -
python基础——redis操作
redis操作先导入redis模块import redisdef main(): client = redis.Redis(host='127.0.0.1', port=6379, password='') print(client) client.set('username', 'hellokitty', ex=300) print(client.get('username'))if __name__ == '__main__': main()原创 2021-02-21 23:52:57 · 22 阅读 · 1 评论 -
python基础——自定义自动编写类的工具
class MyTools: @classmethod def makeClass(cls, className, attributes, filepath): """ :param className: 类名字符串 :param attributes: 类中的属性列表 :param filepath: 文件路径,最好是绝对路径 :return: """ # 第一行生成class原创 2021-02-21 23:30:04 · 28 阅读 · 1 评论 -
python基础——pymysql查询操作
pymysql查询操作"""pymysql基本用法:"""import pymysqldef main(): # 创建连接 with pymysql.connect(host="127.0.0.1", port=3306, user='root', password='root', db='bms', charset='utf8') as conn: # 报错就回原创 2021-02-21 16:50:04 · 60 阅读 · 0 评论 -
python基础——mysql的增删改
mysql的增删改"""pymysql基本用法:"""import pymysqldef main(): # 创建连接 with pymysql.connect(host="127.0.0.1", port=3306, user='root', password='root', db='bms', charset='utf8') as conn: # 报错就回滚数原创 2021-02-21 16:43:26 · 23 阅读 · 0 评论 -
python基础——使用pymysql连接数据库
使用pymysql连接数据库"""pymysql基本用法:"""import pymysqldef main(): # 创建连接 with pymysql.connect(host="127.0.0.1", port=3306, user='root', password='root', db='bms', charset='utf8') as conn: # 报原创 2021-02-21 16:29:31 · 29 阅读 · 1 评论 -
python基础——创建虚拟环境添加依赖项(pip常用命令)
创建虚拟环境添加依赖项创建虚拟环境添加依赖项1.在pycharm进入命令输入框2.更新一下pip,命令:pip install -U pip3.安装pymysql,命令:pip install pymysql原创 2021-02-21 16:04:54 · 54 阅读 · 1 评论 -
python基础——gevent和猴子补丁
gevent和猴子补丁"""greenlet已经实现了协程,但是这个人工切换,是不是觉得太麻烦了,不要着急,python还有一个比greenlet更强大的并且能够自动切换任务的模块'gevent'其原理是当一个greentlet遇到IO(指的是input output输入输出,比如网络、文件操作等)操作时,就自动切换到其他的greenlet,等到IO完成,在适当的时候切换回来继续执行由于IO操作非常耗时,经常使程序处理等待状态,有了gevent我们自动切换协程就保证总有greenlet在运行原创 2021-02-21 15:35:41 · 28 阅读 · 0 评论 -
python基础——greenlet实现协程
greenlet实现协程"""# 进程 》 线程 》 协程协程:微线程greenlet 完成协程任务:底层是使用生成器来实现,但是不够智能,需要手动去切换"""import timeimport greenletdef a(): # 任务A for i in range(5): print('A', i) gb.switch() # 切换到任务b来执行 time.sleep(0.1)def b(): # 任务B f原创 2021-02-21 15:10:23 · 18 阅读 · 0 评论 -
python基础——生产者与消费者(两个线程间的通信)
生产者与消费者(两个线程间的通信)"""生产者与消费者:两个线程之间的通信Python的queue模块中提供了同步的、线程安全的队列类,包括FIFO(先入先出)对垒Queue,LIFO(后入先出)队列LifoQueue,和优先级队列PriorityQueue。这些队列都实现了锁原语(可以理解为原子操作,即要么不做,要么都做),能够在多线程中直接使用。可以使用队列来实现线程间的同步。"""import threadingimport queueimport randomimport t原创 2021-02-21 14:52:58 · 12 阅读 · 0 评论 -
python基础——多线程同步
多线程同步"""因为python自带解释器锁GIL,所以我们用下面这种方式测试,当cpu运算速度达到一定数值,才会释放解释器锁下面的例子,不加锁时,运算打印的num是小于2000000,因为多线程运行时num数据不安全加锁后,num == 2000000"""import threadingnum = 0lock = threading.Lock()def task1(): lock.acquire() global num for i in range(10原创 2021-02-21 01:39:08 · 23 阅读 · 1 评论 -
python基础——多线程
多线程"""多线程:多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。具有这种能力的系统包括对称多处理机、多核心处理器以及芯片级多处理(Chip-level multithreading)或同时多线程(Simultaneous multithreading)处理器。在一个程序中,这些独立运行的程序片段叫做“线程”(Thread),利用他编程的概念就叫做“多线程处理原创 2021-02-21 01:03:20 · 9 阅读 · 1 评论 -
python基础——进程间通信
进程间通信"""进程间通信:Queue:队列q.put(obj, timeout=3):如果queue满了,则只能等待,默认一直等待,设置timeout=3,表示等待3s没有添加成功就报错,除非弹出一个元素,才能添加成功q.full():判断队列是否满了q.empty():判断队列是否空的q.get(timeout=3):从队列中取值q.put_nowait():不阻塞q.get_nowait():不阻塞"""from multiprocessing import Queuefro原创 2021-02-20 18:27:01 · 10 阅读 · 0 评论 -
python基础——进程池之非阻塞式和阻塞式
进程池之非阻塞式和阻塞式"""当需要创建的子进程不多时,可以直接利用multiprocessing中的Process动态生成多个进程,但如果是上百甚至上千个目标,手动的去创建进程的工作量巨大,此时可以用到multiprocessing模块提供的Pool方法。初始化Pool时,可以指定一个最大进程数,当有新的请求提交到Pool中时,如果池还没有满,那么就会创建一个新的进程用来执行该请求;但如果池中的进程数已经达到指定的最大值,那么该请求就会等待知道池中有进程结束,才会创建新的进程来执行阻塞式:原创 2021-02-20 18:07:52 · 35 阅读 · 1 评论 -
python基础——自定义进程
自定义进程"""创建自定义进程"""from multiprocessing import Processimport timeclass MyProcess(Process): def run(self): n = 1 while True: time.sleep(1) print('进程名字:' + self.name) print('{}----->自定义进程,n:{}原创 2021-02-20 17:35:15 · 10 阅读 · 0 评论 -
python基础——sys模块
"""模块的搜索路径存储在system 模块的sys.path变量中,变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录。系统模块:sys"""import sysprint(sys.path) # 模块的搜索路径列表print(sys.version) # 当前项目运行时的python版本print(sys.argv) # 当前项目运行时传参,是一个列表...原创 2021-02-20 13:56:54 · 12 阅读 · 0 评论 -
python基础——循环导入问题解决
循环导入问题解决"""循环导入: 模块A: def test(): f() 模块B: def f(): test()如何避免循环导入: 1.重新调整架构(不推荐) 2.将导入语句移动到函数中 3.改用导入包的方式,不用导入具体函数的方式,就是使用 import 模块名,不使用from 模块名 import 函数名"""import calculatedef task1(原创 2021-02-20 13:49:23 · 27 阅读 · 1 评论 -
python基础——模块的导入和使用
模块的导入和使用自定义模块# 定义一个模块# 可以通过__all__,来限制 * 号导入所有的东西__all__ = ['add', 'sub', 'multiply', 'divided', 'Calculate']name = '自定义计算模块'def add(*args): """ :arg:可变参数,可以传入多个参数 """ print('----->add')def sub(*args): """ :arg:可变参数,原创 2021-02-20 12:51:08 · 9 阅读 · 1 评论 -
python基础——单例模式
单例模式# 单例模式:就是不管实例化多少次,都只创建一个对象"""java中单例模式如何创建: 1.需要一个私有的构造器 2.一个静态属性,就是该类的实例 3.一个静态方法,获取该类的实例"""# 懒汉式class Singleton: __instance = None # 重写__new__方法,使该类无法在外部实例化 def __new__(cls, *args, **kwargs): return None原创 2021-02-20 11:50:19 · 7 阅读 · 1 评论 -
python基础——多态
多态# 多态"""java中多态:父类引用变量指向子类对象,调用同样的方法,展现不同的形态python中的多态是不严谨的多态"""class Person: def __init__(self, name): self.name = name def feed_pet(self, pet): if isinstance(pet, Pet): # ---> 判断obj是不是类的对象或者是不是其类子类的对象 print(原创 2021-02-20 00:14:58 · 12 阅读 · 1 评论 -
python基础——多重继承与__mro__
多重继承与__mro__# 多重继承"""python允许多继承class 子类(父类1,父类2,父类3...) pass多继承的搜索顺序:经典类搜索方法:从左到右,深度优先"""# 一、经典类多继承搜索顺序案例print('-' * 20, '经典类start', '-' * 20)class P1: def foo(self): print('p1--->foo') def bar(self): print('p1-原创 2021-02-19 23:59:54 · 11 阅读 · 1 评论 -
python基础——继承关系
继承关系"""继承: Student,Employee,Doctor ---> 都属于人类 相同代码 ---> 代码冗余,可读性不高 将相同的代码提取 ---> Person类 Student,Employee,Doctor ---> 继承Person class Student(Person): pass特点: 1.如果类中不定义__init__,调用父类super class的__i原创 2021-02-19 23:08:44 · 10 阅读 · 0 评论