自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 收藏
  • 关注

原创 Memcached缓存系统

1.0 介绍memcached之前是danga的一个项目,由LiveJournal的Brad Fitzpatrick开发,当初的设计师为了加速LiveJournal访问速度而开发的,这是一套开放源代码软件。它是一套分布式的高速缓存系统,全世界有不少的公司采用这个项目构建大负载网站,来分担数据库的压力。它是通过在内存里维护一个巨大的hash表,memcached能够存储各种各样的数据,包括文件、视频、图像以及数据库检索结果等,简单说就是把数据调到内存中,在内存中直接读取,从而提高读取速度。哪些情况

2021-05-12 21:34:35 210

原创 数据库迁移完全版

1.0 主文件modelsfrom exts import dbclass User(db.Model): __tablename__ = 'user' id = db.Column(db.Integer, primary_key=True,autoincrement=True) username = db.Column(db.String(50)) email = db.Column(db.String(50))#建立多对多的关系需要建立中间表格articl

2021-05-11 23:53:07 170

原创 Flask-Restful插件

1.0 Restful介绍1.1介绍Flask-Restful是一个用来专门写restful api的一个插件,使用它可以快速集成restful api功能。在app后台以及纯api后台,这个插件可以帮助我们节约很多时间。如果在普通的网站中,这个插件就显得有些鸡肋,在普通网页是需要去渲染HTML代码的,而flask-restful的每个请求都是返回json格式的数据1.2 安装flask-restful需要在flask 0.8以上的版本安装,在python2.6或者python3.3上运行。

2021-05-11 23:43:27 256 1

原创 Restful API规范

1.0 restful规范restful规范是前端与后台进行通讯的一种规范,使用这个规范可以使前后端开发更方便。1.1 协议采用http或https协议。1.2 数据传输格式数据传输的格式应该都采用json,而不使用XML。1.3 urL链接url链接不能有动词,只能有名词,并且对于一些名词,如果出现复数,应该在后面加s1.4 http请求方法GET:从服务器上获取资源POST:在服务器上新建一个资源PUT:在服务器上更新资源,客户端提供所有改变后的数据PATCH:在服务器上更新资

2021-05-11 22:09:30 388 1

原创 Flask上下文管理

1.0 上下文介绍flask中有两个上下文,一个是应用上下文(app),另一个是请求上下文(request)。应用上下文current_app和请求上下文request 都是一个全局变量,所有请求都是共享的。flask有特殊的机制,可以保证每次请求的数据都是隔离的。所以可以直接导入request对象,也不会被一些脏数据影响,并且不需要在每个函数中使用request的时候,都导入request对象。request: 请求上下文的对象,一般用来保存请求的变量,如:args、form等。s

2021-05-10 22:50:02 517

原创 Cookie和Session

1.0 cookie 与 session1.1 cookiecookie :在网站中http 请求是无状态的,当我们第一次访问服务器登录成功后,第二次再去访问,服务器仍然不知道当前请求的是哪个用户cookie的出现就是为了解决这个问题,第一次登录服务器后,服务器返回一些数据(cookie)给浏览器,然后浏览器保存到本地,这样第二次访问服务器时,用户就会自动的把上次存储的cookie携带上,这样服务器就能通过浏览器携带的cookie知道是哪个用户访问了。cookie的存储数据量有限,各个浏览器大小略

2021-05-08 16:24:55 146 2

原创 WTForms表单验证

1.0 Flask-WTFflask-wtf 是简化了Flask-WTForms的第三方库,wtfroms表单验证的两个主要功能是,验证用户数据提交的合法性和渲染模板,也包括一些其他的功能,如CSRF保护,文件上传等。安装flask-wtf默认也会安装WTForms.pip install flask-wtf2.0 表单验证2.1 如下:有一个.py的文件,在里面创建一个RegistForm的注册验证表单。from wtforms import Form, StringField,Integer

2021-05-08 15:39:24 620

原创 Flask-Migrate数据库迁移

1.0 flask-Migrate实际开发中难免遇到需要修改数据库的问题,一般修改数据库不会手动修改,而是修改ORM对应的模型,再把模型映射到数据库中。flask-migrate就是做这个,flask-migrate是基于Alembic进行的一个封装,并继承到Flask中,而所有的操作都是Alembic做的,它能跟踪模型的变化,并将变化映射到数据库中。pip install flask-migrate要让Flask-migrate能够管理app中的数据库,需要使用Migrate(app,db)来绑定

2021-05-05 23:38:09 205

原创 Flask-Script

1.0 Flask-Script的作用flask-script的作用是通过命令的模式操作Flask,要使用flask-script,可以通过:pip install flask-script 安装

2021-05-05 22:49:46 281

原创 Flask-SQLAlchemy框架

1.0 Flask-SQLAlchemy插件Flask-SQLAlchemy是对SQLAlchemy进行了一个简单封装,使得在falsk中使用sqlalchemy更加简单,可以通过下面的命令安装:pip install flask-sqlalchemy1.1 数据库初始化:数据库初始化不再是通过create_enginefrom flask import Flaskfrom flask_sqlalchemy import SQLAlchemyUSERNAME = 'root'PASSWO

2021-04-20 23:14:16 179 1

原创 排序与高级查询

1.0 排序1.1 order_by默认是升序,如果在查询的字段前加 - ,则为降序,如下:==升序==data = session.query(Article).order_by(Article.id).all()==降序==data = session.query(Article).order_by(Article.id.desc()).all()1.2 limit、offset、和切片#limit 限制查询的条数data = session.query(Article).lim

2021-04-20 22:15:27 144

原创 SQLAlchemy-外键

1.0 外键约束1.1介绍在Mysql中,外键可以让表之间的关系更亲密,而sqlaichemy也是支持外键的,它通过ForeignKey类 来实现的,并可以指定表的外键约束。class Base_key1(Bill): __tablename__ = 'class_key1' #创建数据库表 id = Column(Integer, primary_key=True, autoincrement=True) name = Column(String(50)) de

2021-04-13 15:35:14 1376

原创 SQLAIchemy常用的数据类型、参数

1.0 sqlalchemy常用数据类型String 字符类型,需要指定长度,区别于Text类型Integer 整形Float 浮点类型Boolean 传递True/Flase进去DECIMAL D定点类型enum 枚举类型Date 传递datetime.date()进去Datetime 传递datetime.datetime()进去Time 传递datetime.time()进去Text 文本类型LONGTEXT 长文本类型

2021-04-01 12:34:57 480

原创 SQLAlchemy讲解

1.0 SQLAIchemy的作用SQLAIchemy是一个数据库ORM框架,安装命令为pip install SQLAIchemy#mysql下载,ubuntusudo apt-get install mysql-server libmysqlclient-dev-yq#pymysql下载pip install pymysql2.0 通过SQLAIchemy连接数据库from sqlalchemy import create_engine#地址HOSTNAME = '127.0.

2021-03-26 17:30:34 1015

原创 Flask-数据库

1.0 数据库介绍1.1 数据库作用持久化的存储读写速度快保证数据的有效性易于扩展1.2 MYSQLmysql是关系型数据库管理系统。优点:使用C和C++编写,多种编译器测试,保证了源码的可移植性。支持多种操作系统,如windows、linux、AIX、OpenBSD、等。为多种语言提供API,如python,java,php,c,c++,prtl,Ruby等。支持多线程。优化的SQL查询算法,提供查询的速度。提供多语言支持,支持多种编码GB2312,UTF8,BIG5。

2021-03-26 15:48:58 63 1

原创 flask-类试图与蓝图、子域名

1.0 类试图的使用1. 什么是类视图视图也可以基于类的方式来实现,他的**优点**在于可以继承。类视图和视图函数不一样,它需要继承“Views.Vive”类,并使用app.add_url_rule('/profile/',view_func=CeShi.as_view('file'))的方式进行注册2. 类视图的使用需要在子类中重写 “dispatch_request`”方法,需要返回一个Response或者其他子类的对象。3. flask还为我们准备了另一种视图,基于调度方法的视图“vi

2021-03-26 11:15:31 114

原创 Flask之Include与Set语句、模板继承

1.0 include语句**作用:**使用include语句可以把一个模块引入另一个模块中。{% include "commit/index.html"%}2.0 set语句有时候会需要在模块中添加变量,这时候就需要set赋值语句。{% set username = 'jorry'%}如果想要局部使用set语句,不让它全局,那么可以使用with{% with %} {% set username = 'juran' %}#这个就是局部设置,不会影响全局{% endwith %}

2021-03-25 15:30:06 123

原创 导包

1.0 导包我们公司开发项目的时候,有可能会遇到公司直接给你一个包,让你做项目的时候直接使用。解决的方法如下:例如:requirements.txt 包freeze> c:/xxx/xxx/requirements#去到项目的目录下,导出依赖包到 某个位置pip install -r requirement.txt#在项目虚拟环境安装导出的依赖包...

2021-01-01 00:02:39 76

原创 FLASK模板介绍

1.0 模板1.1 介绍模板是WEB开发必备的模块,我们在渲染网页时,并不只是渲染一个纯文本字符串,而是渲染一个富文本的页面,这时候我们就需要模板,在flask中配套的模板是jinja2,jinja2的作者也是flask的作者。1.2 flask渲染jinja2模板要渲染一个模块,使用render_template方法from flask import Flask,render_templateapp = Flask(__name__)@app.route('/boot/')def hel

2020-11-13 16:46:31 1289

原创 Flask框架讲解(二)

1.0 URL与视图的补充1.1 构造url(url_for)一般我们可以通过url 去执行某一函数,如果反过来,我们如何通过一个函数去知道url呢?url_for函数就可以帮我们实现这个功能。url_for()函数接收两个及以上的参数,他接收函数名作为第一个参数,接收对应URL规则的命名参数,如果还出现其他的参数,则会添加到URL的后面作为查询参数。如下:from flask import Flask,url_forapp = Flask(__name__)@app.route('/web

2020-10-27 15:45:18 176

原创 Flask框架讲解(一)

1.0 Flask框架环境1.1 虚拟环境为什么需要虚拟环境?我们通常安装第三方包通常都是“pip install xxx”方式去安装的,这样的安装会使包安装在系统级的Python环境中,假如用Django 1.10.x写了个网站,然后你的领导跟你说,之前有一个旧项目是用Django 0.9开发的,让你来维护,但是Django 1.10不再兼容Django 0.9的一些语法了,这样就容易导致某个项目无法使用,这个时候我们就需要使用虚拟环境。1.2 安装windows 下安装pipenv(li

2020-10-12 20:42:55 393

原创 Python之MySQL优化(下)

1.0 排序优化1.1 永远是小表驱动大表ordel by 优化#ordel by 语句 尽量选择index 方式排序,避免使用filesort (文件内排序)排序。create table tbla(age int ,birth timestamp not null);insert into tbla(age,birth) values(22,now()); insert into tbla(age,birth) values(23,now());insert into tbla(age,

2020-10-10 14:06:40 294

原创 Python之MySQL优化(上)

1.索引优化1.1 索引的分类分类角度索引名称数据结构B+树,Hash索引,B-Tree 等存储层面聚簇索引,非聚簇索引逻辑层面主键索引,普通索引,组合索引,唯一索引,空间索引1.2 回表假设我们执行一条查询语句select * from person where ID = 6,因为直接使用的是主键ID查询,所以就会用主键索引,由于主键索引直接关联了整行所有数据,所以,引擎只要执行一次就能查询出结果。如果执行的sql语句是非主键索引select * f

2020-10-09 16:22:21 402 1

原创 Python之SQL语句分析

1.0 影响服务器性能的几个方面1.1影响服务器性能的几个方面服务器硬件服务器操作系统数据库储存引擎的选择数据库参数配置数据库结构设计和SQL语句1.2 SQL性能下降的原因查询语句写的不好索引失效关联查询太多的 join服务器调优及各个参数设置1.3 SQL的加载顺序手写sql语句顺序:select distinct <select _list>from <left_table>join <right_table&

2020-08-19 23:06:29 2105

原创 Python之MySQL的基准测试

1.0 什么是基准测试基准测试是一种测量和评估软件性能指标的活动用于建立某个时刻的性能基准,以便当系统发生软硬件变化时重新进行基准测试以评估变化对性能的影响基准测试是针对系统设置的一种压力测试2.0 基准测试特点直接、简单、易于比较,用于评估服务器的处理能力可能不关心业务逻辑,所使用的查询和业务的真实性可以和业务环境没关系3.0 压力测试特点• 对真实的业务数据进行测试,获得真实系统所能承受的压力• 需要针对不同主题,所使用的数据和查询也是真实用到的• 基准测试是简化了的压力测试4.

2020-08-09 23:50:21 177

原创 Python之数据库存储引擎讲解

1.0 数据库存储引擎1.1 数据库存储引擎介绍数据库的存储引擎可以分为四个部分:网络连接层服务层存储引擎层系统文件层如下:2.0 服务层第二层服务层是MySQL的核心,MySQL的核心服务层都在这一层,查询解析,SQL执行计划分析,SQL执行计划优化,查询缓存。以及跨存储引擎的功能都在这一层实现:存储过程,触发器,视图等。通过下图来观察服务层的内部结构3.0 存储引擎层负责MySQL中数据的存储与提取。 服务器中的查询执行引擎通过API与存储引擎进行通信,通过接口屏蔽了不同存

2020-08-09 23:36:52 290

原创 新手的篇章之SQL高级

1.0 视图1.1 视图介绍视图是一种虚拟存在的表,它并不在数据库中实际存在,行和列来自查询视图自定义的表,使用视图时动态生成的。1.2 定义视图create view 视图名称 as select 语句SELECT * FROM provinces;CREATE VIEW v_pro AS SELECT * FROM provinces;SELECT * FROM v_pro;1.3 查看视图show tables;1.4 使用视图select * from v_pro;

2020-08-09 23:06:26 154

原创 新手的篇章之MySQL与Python的交互

1.0 mysql 与python的交互1.1实例演示-- 创建一个商品 goods 数据表CREATE TABLE goods( id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT NOT NULL, NAME VARCHAR(150) NOT NULL, cate_name VARCHAR(40) NOT NULL, brand_name VARCHAR(40) NOT NULL, price DECIMAL(10,3) NOT NULL D

2020-08-03 17:31:39 94

原创 新手的篇章-SQL语句(下)

1.0 分组与分组后的筛选1.1 分组在SQL中,通过 group by 将查询结果按照1个或多个字段进行分组,字段值相同的为一组。select * from teacher group by name(需要分组的字段);1.2 分组后的筛选

2020-08-03 17:08:47 106

原创 新手的篇章-SQL语句

1.0 数据库介绍1.数据库(database)简称DB,实际上就是一个文件集合,是一个存储数据的仓库,本质就是一个文件系统,数据库是按照特定的格式把数据存储起来,用户可以对存储的数据进行增删改查等操作。2.数据库存储数据特点• 持久化存储• 读写速度极高• 保证数据的有效性• 对程序支持非常好,容易扩展3.数据库的分类• 关系型数据库:可以保存现实生活中的各种关系数据,数据库中存储数据以表为单位;主流关系型数据库:MySQL,Oracle,SQLServer等• 非关系型数据库:通常用来

2020-07-23 23:28:01 107

原创 Python中经典的参数错误

事例一:def add(a,b): a += b return aa = 1b = 2c = add(a,b)print(c) print(a,b) a = [1,2]b = [3,4]c = add(a,b)print(c) #【1,2,3,4】 print(a,b) #【1,2,3,4】,【3,4】 列表是可变数据类型,可以在它自身上进行增删改查a = (1,2)b = (3,4)c = add(a,b)print

2020-07-19 23:45:09 287

原创 Python高级编程技巧-线程与进程(进阶讲解)

1.0 互斥锁和死锁1.1 互斥锁当多个线程想要同时修改某一个共享数据时,就需要进行同步控制。某个线程要更改共享数据时,先将其锁定,此时资源的状态为"锁定",其他线程不能改变,只到该线程释放资源,将资源的状态变成"非锁定",其他的线程才能再次锁定该资源。互斥锁保证了每次只有一个线程进行写入操作,从而保证了多线程情况下数据的正确性。如下:import threadingnum = 100#添加线程demo,并写入两个形参def demo(count,suo1): #把num转为全局变

2020-07-19 23:44:26 185

原创 Python高级编程技巧-线程详细解析

1.0 多任务的介绍同时做多件事(多个任务),就可以说是多任务。并发:cpu小于当前开启的任务,是假的多任务并行:cpu大于当前开启的任务,是真的多任务实现多任务的三种方式:线程进程协程2.0 线程介绍线程是操作系统能够进行运算调度的最小单位,它被包含在进程当中,是进程中的实际运算单位。2.1 使用线程完成多任务##线程间的执行是没有顺序的,是同时进行,但先后顺序可能会变动。import threadingimport timedef demo(): print("h

2020-07-14 22:47:05 127

原创 Python高级编程技巧-TCP发送与接收

1.0 TCP介绍当应用程序希望通过TCP与另一个应用程序通信时,它会发送一个通信请求。这个请求必须被送到一个确切的地址。在双方“握手”之后,TCP将在两个应用程序之间建立一个全双工(full-duplex)的通信。这个全双工的通信将占用两个计算机之间的通信路线,直到它被一方或双方关闭为止。三次握手四次挥手tcp的特点:面向连接可靠传输2.1 TCP采用发送应答机制2.2 超时重传2.3 错误校验2.4 流量控制和阻塞管理2.0 UDP介绍当应用程序希望通过UDP与一

2020-07-08 19:54:32 536 1

原创 Python高级编程技巧-UDP发送与接收数据

1.0 Socket简介1.1 TCP/IP协议TCP/IP协议是Transmission Control Protocol/Internet Protocol的简写,即传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的协议来完成自己的需求。然而,TCP/IP

2020-07-07 16:08:27 477

原创 Python高级编程技巧-元类编程及迭代器生成器

1.0 __getattr__和__getattribute__魔法方法#__getattr__当访问的属性不存在时,自动触发的一个方法.class User(object): def __init__(self,name,info): self.name = name self.info = info def __getattr__(self, item):#当实例访问属性时,没有这个 # 属性就会触发这个方法 retur

2020-07-04 00:11:42 100

原创 Python高级编程技巧-垃圾回收及性能分析

1.0实例方法名字的字符串调用方法

2020-06-27 22:47:23 127

原创 Pythoon高级编程技巧-类与对象深度问题及解决技巧

如何派生内置不可变类型并修改其实例化行为

2020-06-22 17:26:35 223 1

原创 Python高级编程技巧-对象和类的深入讲解

1.0 鸭子类型和多态1.1 Python 比较崇尚鸭子类型,长得像鸭子,走路像鸭子,我们就可以称它是鸭子。a = [1, 2]b = [3, 4]c = (5, 6)d = "abc"a.append(b)a.append(c)a.append(d)输出结果:【1,2,3,4】输出结果:【1,2,5,6】输出结果:【1,2,a,b,c】什么是动态语言:是指数据类型的检查是在运行时做的。用动态类型语言编程时,不用给变量指定数据类型,该语言会在你第一次赋值给变量时,在内部记录数据类

2020-06-17 17:18:42 184

原创 Python之异常和文件详解

异常简介1.程序在运行过程中可能产生的错误,比如使用了不存在的索引,不同类型的计算。print(10/0) #报错2.处理异常程序运行出现异常,目的并不是让程序终止,而且让程序出现异常时,我们可以编写代码进行处理。异常传播1.当在函数中出现异常时,如果在函数中没有对异常进行处理,则异常会在函数调用处传播,直到传递到全局作用域(主模块),如果还是没有处理,则程序终止 ,报出异常信息。2.当程序出现异常时,所有异常会被保存在一个异常对象中,当异常传播时,即把异常对象抛给调用处。例如:def

2020-05-23 09:41:00 144

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除