我们经常需要从文件中读取数据或向其中写入数据,但要做到这一点,我们需要检查文件是否存在。
SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取执行结果。
关于ORM:
全称Object Relational Mapping(对象关系映射)。
特点是操纵Python对象而不是SQL查询,也就是在代码层面考虑的是对象,而不是SQL,体现的是一种程序化思维,这样使得Python程序更加简洁易读。
具体的实现方式是将数据库表转换为Python类,其中数据列作为属性,数据库操作作为方法。优点是(1)简洁易读:将数据表抽象为对象(数据模型),更直观易读;(2)可移植:封装了多种数据库引擎,面对多个数据库,操作基本一致,代码易维护;(3)更安全:有效避免SQL注入。
Flask-RESTful 内置了支持验证请求数据,它使用了一个argparse 的库。
help–定义了报错时的提示信息。
Flask-RESTful 提供了 <span class="pre">fields</span>
模块和 <span class="pre">marshal_with()</span>
装饰器。类似 Django ORM 和 WTForm,可以使用 fields 模块来响应中格式化结构。
flask.ext.restful.
marshal_with
(fields, envelope=None)
A decorator that apply marshalling to the return values of your methods.
主要是解决以下报错:
导入模块的方式;
此外,fields.Nested(),fields.List()也是常用从方法。
进程>线程>协程
主进程:执行的时候,默认的进程称作主进程;子进程,在主进程中可以开启子进程。
multiprocessing模块提供了类似threading模块的接口,并对进程的各种操作进行了良好的封装,提供了各种进程间通信的接口例如Pipe, Queue等等,可以实现进程间的通信,同步等操作。
在子进程中修改全局变量对父进程中的全局变量没有影响。因为父进程在创建子进程时对全局变量做了一个备份,父进程中的全局变量与子进程的全局变量完全是不同的两个变量。全局变量在多个进程中不能共享。
即:如果是全局变量,则每个进程都会拥有一份全局变量,各自操作各自的全局变量。
有时候会需要父进程等待子进程结束再执行父进程后面的代码,此时可以考虑使用join()方法。
例子如下:
jion()也可以理解为阻塞主进程,此处后面的代码,主进程暂不执行。它可以设置timeout。
(1) start():启动子进程实例(创建子进程);
(2) is_alive():判断子进程是否还在活着;如果任务完成,则false;
(3) join([timeout]):是否等待子进程执行结束,或等待多少秒;
(4) terminate():不管任务是否完成,立即终止子进程;
(5) close
() :关闭 <span class="pre">Process</span>
对象,释放与之关联的所有资源。如果底层进程仍在运行,则会引发 <span class="pre">ValueError</span>
。注意,如果资源释放后(已调用colse()),再执行 is_alive()会报错。
如果要启动大量的子进程,可以用进程池的方式批量创建子进程。
需要使用到了multiprocessing模块的Queue(队列)。
1.快速入门 — Flask- SQLAlchemy 2.0 documentation
2.Python3多进程multiprocessing模块的使用
3. <span class="pre">multiprocessing</span>
— 基于进程的并行
Original: https://www.cnblogs.com/xuliuzai/p/15390819.html
Author: 东山絮柳仔
Title: Python 学习笔记(五)
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/621276/
转载文章受原作者版权保护。转载请注明原作者出处!