- 博客(26)
- 收藏
- 关注
原创 sqlalchemy同一张表不同结果合并
# 同一个表,两个不同的 query 返回的是满足不同条件的结果,合并成一个 queryq1 = db.seesion.query(模型).filter(模型.字段==条件)q2 = db.seesion.query(模型).filter(模型.字段==条件)result = q1.union(q2)
2022-03-24 18:35:48
585
1
原创 Dataframe常用方法(持续更新)
# 查看某列包含哪些值df['columnName'].unique()# 选择DataFrame里面某一列等于某个值的所有行df.loc[df['columnName']=='the value']
2021-12-01 11:20:51
359
转载 Pandas必会的方法汇总
一、Pandas两大数据结构的创建序号方法说明1pd.Series(对象,index=[ ])创建Series。对象可以是列表\ndarray、字典以及DataFrame中的某一行或某一列2pd.DataFrame(data,columns = [ ],index = [ ])创建DataFrame。columns和index为指定的列、行索引,并按照顺序排列举例:用pandas创建数据表:df = pd.DataFrame({"id":[1001,1002,
2021-08-20 16:00:37
143
原创 Support for password authentication was removed on August 13, 2021
git push 推送代码发生如下错误:remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more in
2021-08-19 15:40:56
186
原创 虚拟环境导入和导出
(venv) $ pip freeze >requirements.txt # 生成(venv) $ pip install -r requirements.txt # 安装
2021-08-04 16:08:22
238
原创 v-text/v-html
基本的插值表达式只能解决简单的数据显示,至于更复杂的功能,就涉及到 vue 中的指令。v-text / v-html 都是对于文本处理的指令,功能上和插值表达式类似。指令名称说明v-text主要用于处理渲染纯文本,被渲染标签内部的内容会被全部覆盖v-html可以渲染纯文本,也可以渲染 HTML 代码,所以需要注意网站安全问题示例代码:<body> <div id="app"> <!-- v-text -->
2021-06-10 16:18:09
113
原创 Vue操作操作属性,修改属性,调用方法
1.操作属性<!DOCTYPE html><head> <meta charset="UTF-8"> <title>操作数据</title> <script src="./js/vue.js"></script> <script> window.onload = function () { // uve对象 var
2021-06-10 11:30:50
1385
原创 缓存穿透常用解决方案
针对缓存穿透的常见解决方案有以下两种:方案1: 对于数据库中不存在的数据, 也对其在缓存中设置默认值Null,为避免占用资源,一般过期时间会比较短;相对简单, 但是也容易破解, 比如 攻击者通过分析数据格式, 不重复的请求数据库不存在数据, 那这样方案1就等于失效的.方案2: 可以设置一些过滤规则, 如布隆过滤器;设计思路是通过设置过滤规则, 在数据库查询之前将数据进行过滤, 如果发现数据不存在, 则不再进行数据库查询, 以此来减小数据库的访问压力。过滤规则目前主流的一种的载体就是布隆过滤器.
2021-04-08 13:44:33
356
原创 Python __new__和__init__的区别
区别new方法是在init方法前被调用的。new负责创建,init负责创建后的赋值。new是静态方法,参数中有cls。init是实例方法,参数中含有self。new方法必须要返回一个实例,一般是调用父类的new方法。如果没有返回值,实例的init方法不会被执行。init方法没有返回值,或者返回值必须是空,否则引发异常。...
2021-04-07 16:53:10
231
原创 Redis之缓存穿透、缓存雪崩和缓存击穿
Redis缓存机制一个缓存请求的流程:数据查询先进缓存查询,如果key不存在或者key过期,就去数据库查询,如果查到数据,放到放到缓存中,如果没有key对应的value,则不放进缓存。缓存穿透:当缓存和数据库都没有数据的情况下,如果攻击者找到一个一定不会存在的key,比如id为-1,一直请求:缓存查询不到,去数据库查询;数据库查询不到,不会有对应的value进缓存,回到1;缓存雪崩:例如一大批商品同时入缓存,正常策略会导致这一大批的缓存数据会同时失效,查询又会落到数据库,如果遇到大规模查询
2021-04-07 16:44:38
132
原创 Django表单
什么是表单?何时使用表单?在web开发里表单的使用必不可少。表单用于让用户提交数据或上传文件,表单也用于让用户编辑已有数据。Django的表单Forms类的作用是把用户输入的数据转化成Python对象格式,便于后续操作(比如存储,修改)。自定义表单类似模型,Django表单也由各种字段组成。表单可以自定义(forms.Form),也可以由模型Models创建(forms.ModelForm)。值得注意的是模型里用的是verbose_name来描述一个字段, 而表单用的是label。下面是两个Cont
2021-04-07 16:30:00
433
原创 Python深拷贝与浅拷贝
import copy# 不可变类型num1 = 1str1 = '哈哈哈'tuple1 = (1, 2, 3)# 可变类型list1 = [1, 2, 3]dict1 = {'name': '马云', 'phone': 110}set1 = {1, 2, 3}# 浅拷贝# 不可变类型num2 = copy.copy(num1)str2 = copy.copy(str1)tuple2 = copy.copy(tuple1)# 可变类型list2 = copy.copy(li
2021-04-02 17:03:23
148
原创 serializer.is_validated()做了哪些事情?
Serializer类继承自BaseSerializer类is_valid()方法,做了两件事,一个把验证过的数据赋值给validated_data属性(serializer.validated_data的值就等于验证前的的值),一个返回布尔值判断数据是否验证通过
2021-04-02 17:00:16
223
原创 一文看懂常用非关系型数据库MongoDB、Memcached、Redis
在Python Web开发过程中我们有必要根据不同的应用场景来选择非关系型的数据库(no-SQL)来提升网站性能。当我们的网站流量变得非常大时,从传统关系型数据库如MySQL中读写数据会变得很消耗时间和计算资源。例如当MySQL单表数据达到5GB以上时,读写性能会有显著的下降,这时我们就需要考虑使用其它类型数据库来补充了。目前最流行的no-SQL数据库是MongoDB, Memcached和Redis。下面介绍下它们的区别及应用场景。MongoDBMongodb是文档型的非关系型no-SQL数据库,其优
2021-02-08 17:12:50
564
转载 Django执行makemigrations报AttributeError: ‘str‘ object has no attribute ‘decode‘
问题原因:python 3中只有unicode str,所以把decode方法去掉了解决方法:顺着报错文件点进去,找到query = query.decode(errors=‘replace’),将decode修改为encode即可
2021-02-07 15:48:06
191
原创 Python内存分配机制
创建对象(变量、函数、对象等)后,CPython(解释器)会在内存中为其分配地址。Python有一个id()函数,它可以返回对象的“身份”,也就是内存地址。它实际上是一个唯一的整数。开始作为一个实例,让我们创建四个变量并为其赋值:attr1 = 1attr2 = "abc"attr3 = (1,2)attr4 = ['a',1]#打印他们的idprint('attr1: ', id(attr1))print('attr2: ', id(attr2))print('attr3: ', id
2021-02-05 12:04:16
620
原创 基于类的视图APIView, GenericAPIView和视图集
为什么要使用基于类的视图(CBV)?一个中大型的Web项目代码量通常是非常大的,如果全部使用函数视图写,那么代码的复用率是非常低的。而使用类视图呢,就可以有效的提高代码复用,因为类是可以被继承的,可以拓展的。特别是将一些可以共用的功能抽象成Mixin类或基类后可以减少重复造轮子的工作。DRF推荐使用基于类的视图(CBV)来开发API, 并提供了4种开发CBV开发模式。使用基础APIView类使用Mixins类和GenericAPI类混配使用通用视图generics.*类, 比如 generics.
2021-02-04 15:20:33
340
原创 序列化器介绍及以博客为例开发基于函数视图的API
# 接口描述:文章列表资源。GET请求获取文章列表资源, POST请求提交新文章# 接口地址: http://127.0.0.1:8000/api/v1/articles# 请求方式:GET, POST# 返回参数:JSON格式文章列表和状态码# 接口描述:单篇文章资源。GET获取文章详情, PUT修改,DELETE删除# 接口地址: http://127.0.0.1:8000/api/v1/articles/{id}# 请求方式:GET, PUT, DELETE# 返回参数: GET和PU
2021-02-04 14:12:20
229
1
原创 DRF简介
Django REST Framework的介绍及安装Django REST framework (DRF)是基于Django实现的一个RESTful风格API框架,能够帮助我们快速开发RESTful风格的API,文档地址如下所示:官网:https://www.django-rest-framework.org/中文文档:https://q1mi.github.io/Django-REST-framework-documentation/DRF可以使用pip安装,安装前请确保你已经安装了Django
2021-02-04 11:02:06
2648
3
转载 Python中的实例方法、类方法、静态方法和普通方法
class C: # 实例方法(有self参数,self指代创建的实例) def self_method(self, a): return a # 类方法,第一个参数为cls @classmethod def class_method(cls, a): return a # 静态方法 @staticmethod def static_method(a): return a # 普通方法 def me
2021-02-03 11:33:19
238
转载 Python 中@property的介绍与使用
python的@property是python的一种装饰器,是用来修饰方法的。作用:我们可以使用@property装饰器来创建只读属性,@property装饰器会将方法转换为相同名称的只读属性,可以与所定义的属性配合使用,这样可以防止属性被修改。使用场景:1.修饰方法,是方法可以像属性一样访问。class DataSet(object): @property def method_with_property(self): ##含有@property return 15 de
2021-02-03 11:24:14
222
原创 Git的安装和配置
1.安装首先,你可以在终端试着输入git,看看系统有没有安装Git:$ git Linux安装$ sudo apt-get install gitMac安装方法1$ brew install git方法2安装Xcode,Xcode集成了Git,不过默认没有安装,你需要运行Xcode,选择菜单“Xcode”->“Preferences”,在弹出窗口中找到“Downloads”,选择“Command Line Tools”,点“Install”就可以完成安装了。Windows安装
2021-01-30 12:10:19
123
原创 解决Mac-zsh找不到命令
Mac OS zsh: command not found XXX 的原因和解决方法因为MacOS Catalina默认使用了zsh的Shell语言,系统更新后可能会导致部分命令出现找不到的情况原因导致命令不可用的真正原因是zsh和bash的默认环境变量配置文件地址不一致导致的。比如我一般习惯把环境变量配置到 /etc/profile 中,这应该也是大多数有linux的bash操作习惯的人喜欢配置的路径。但是zsh的默认并没有读取/etc/profile的环境变量,所以导致之前在环境变量配置的环境
2021-01-30 00:03:32
2419
1
原创 Django工程搭建
一.环境安装创建虚拟环境# mkvirtualenv 虚拟环境名 -p python版本(不指定默认python2)mkvirtualenv django_py3_1.11 -p python3安装Django(需要联网) python 先切换到虚拟环境,再用pip安装 pip install django==版本号 pip install django==1.11.11 ``二.创建工程创建创建工程的命令为:django-admin startproject 工程名称例
2021-01-11 21:28:22
112
转载 Django1.0+和2.0+的区别
1.路由层1.0+使用的是url2.0+或3.0+使用的是path**注:**url第一个参数是一个正则表达式,而path第一个参数不支持正则表达式 写什么就匹配什么,如果你觉得path不好用 2.x、3.x给你提供了一个跟url一样的功能,即:re_path 等价于1.x里面的url功能虽然path不支持正则表达式 但是它提供了五种默认的转换器①str,匹配除了路径分隔符(/)之外的非空字符串,这是默认的形式②int,匹配正整数,包含0③slug,匹配字母、数字以及横杠、下划线组成的字符串。
2021-01-10 03:46:12
507
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人