Python
Python3技术栈
极客点儿
但行好事,莫问前程
展开
-
PyCharm 中的特殊标记
项目的时候,经常会有一些特殊的标记,有些是编辑器提示的代码规范,有些则为了方便查找而自定义的标记。原创 2024-04-23 15:32:00 · 744 阅读 · 0 评论 -
pip 如何更换国内镜像源?
这种方法是临时的,如果想要永久更改源就需要将源写到配置文件中。也可以使用自己搭的本地。原创 2023-10-30 17:36:51 · 374 阅读 · 0 评论 -
Python3 获取当前服务器公网 IP 地址
我测试几个发现,方法有很多,好用的就发现一种,即直接使用。获取当前服务器公网的。原创 2023-10-30 13:20:39 · 686 阅读 · 0 评论 -
Python3 如何获取照片的 Exif 信息?
事情是这样的,最近不是换了新手机了嘛,将旧手机里的照片导出到电脑中做一个备份,但是所有的照片都备份到一个目录中显然又乱又不好找。按照我以往的惯例都是按年/月命名的目录格式存储,所以就引出了如何使用程序来处理这些照片。之前在玩单反的时候了解到数码相机都有一些标准的协议和格式,其中有一个Exif格式就能存储照片的拍摄时间,通过获取到拍摄时间和Python程序就可以让这些照片归位。原创 2023-09-25 17:02:29 · 672 阅读 · 0 评论 -
Python3 如何实现 websocket 服务?
Python实现websocketwebsocketwebsockets。但这些包很多都“年久失修”, 比如websocket在2010年就不维护了。而也在2016年停止维护。这也给我们提了一个醒,用三方包的时候一定要看下这个包是否还在持续维护,如果作者已经停止了维护,那就坚决不要再用了,因为过不了多久你就会吃个大亏的。原创 2023-09-25 10:46:09 · 1892 阅读 · 0 评论 -
Python3 对列表、字典以及二者的嵌套数据(JSON)格式排序
在 Python 中,列表和字典都是基础数据类型,这两种数据类型会通过相互嵌套和多个层级形成复杂的数据类型,类似 JSON 数据格式,对列表和字典排序其实可以类比是对 JSON 排序。原创 2023-08-30 17:18:09 · 1163 阅读 · 0 评论 -
Python3 三方包 easysnmp 报错 Error: unknown object id (IF-MIB::ifDescr) 解决思路和解决方案
由于历史原因公司遗留了很多老旧设备,这些设备有很多的是 H3C 的 58 系列,这些老设备有的不支持Netconf,所以在做SDN的时候只能判断多种情况来适配这些老旧设备。华为新设备和 H3C 的 68 系列都用Netconf读设备配置用SNMP写设备配置用SSH。原创 2023-04-06 15:42:06 · 1434 阅读 · 0 评论 -
Python3 如何实现汉字转换拼音?
两个包都可以实现汉字转换拼音的功能,如果只是想简单的拼音转换不涉及复杂的功能那么。最大的优点是功能相对比较丰富。最大的优点是足够轻量和简单。目前常用的有两个包可以实现。代码作为参考实现的,功能没那么强大,但是。可能是个更好的选择。原创 2023-02-06 17:26:09 · 642 阅读 · 0 评论 -
Python3 使用 easysnmp 读取设备时数据解析出现乱码的解决方案
Python3 使用 easysnmp 读取设备时数据解析出现乱码的解决方案。原创 2022-07-29 18:05:59 · 619 阅读 · 0 评论 -
Flask 项目中格式化输出 JSON 日志
from pythonjsonlogger import jsonloggerapp.logger.setLevel('INFO')app.logger.handlers[0].setFormatter(jsonlogger.JsonFormatter('%(asctime)s %(levelname)s %(module)s %(funcName)s %(lineno)s %(message)s')原创 2021-03-07 22:49:31 · 883 阅读 · 0 评论 -
Python3 网络设备信息配置读写处理
背景:公司最近要做网络交换机自动化的优化,一共大概有 1100 网络交换机,其中华为大概有: 400 台,H3C 大概有 700 台,其中 V5 系列有 200 台,V7 系列有 500 台。华为所有的交换机都开通了 SSH 并且支持 Netconf,H3C 的 V7 系列交换机是支持 Netconf,但是 V5 系列不支持Netconf。老的解决方案都是通过 SNMP 进行读配置,Telnet 进行写配置。最近运维团队将所有的设备都开通了 SSH 功能,所以希望我们可以使用基于 SSH 协议原创 2021-08-27 15:52:40 · 548 阅读 · 0 评论 -
Python3 flask 依赖包 werkzeug 报错 ImportError
pip 是 Python 中超级好用的包管理工具,但是 pip 会不定时更新WARNING: You are using pip version 19.3.1; however, version 20.0.2 is available.You should consider upgrading via the 'pip install --upgrade pip' command.提示已经...原创 2020-03-19 17:50:58 · 13568 阅读 · 9 评论 -
Flask 组件 APScheduler
APScheduler 简介APScheduler 是 Flask 的一个任务调度模块,类似于 Linux 中的 Crontab 功能,但它不仅仅只有定时任务APScheduler 分为4个模块,分别是:Triggers 触发器Task Job 工作任务Executors 执行器Schedulers 调度器Triggers 有 3 个触发器date 表示具体...原创 2019-12-16 15:25:53 · 495 阅读 · 0 评论 -
Flask 组件 Bcrypt
Bcrypt 简介Bcrypt 是一个 Flask 扩展,它为你的应用提供了bcrypt散列功能得益于近些年来计算机硬件(如GPU)性能的提升,散列技术已经变得很容易被攻破了。想要解决这个问题,一个积极的作法是使用一种“去优化”的散列技术。Bcrypt就是这样一个散列工具;不同于MD5和SHA1等在速度上优化的散列算法,bcrypt被有意地放慢了算法速度密码等敏感数据必须被保护起来,而bcr...原创 2019-12-16 15:39:03 · 974 阅读 · 0 评论 -
Flask 组件 Migrate
Migrate 简介Migrate 类似于 Django 中的 manager.py 的 migrate,它的作用是将我们写好的 ORM 类对象,迁移到数据库中数据库迁移操作顺序python 文件 db init根据需求修改模型python flaskapp文件 db migrate -m"新版本名(注释)"python flaskapp文件 db upgrade 然后...原创 2019-12-16 15:15:22 · 457 阅读 · 0 评论 -
Flask + PyJWT 实现基于Json Web Token的用户认证授权
这是我在做用户认证开发过程中看到一位大神写的文章,不过源地址已经失效了,希望有可能未来还能看到传送门。在此转载是不忍心这么好的文章绝版我在 github 上找到了作者的源码,有需要的可以去下载https://github.com/yaoyonstudio/flask-pyjwt-auth在程序开发中,用户认证授权是一个绕不过的重难点。以前的开发模式下,cookie和session认证是主...转载 2020-01-16 21:07:43 · 7788 阅读 · 2 评论 -
Flask 组件 SQLAlchemy
SQLAlchemy 简介:SQLAlchemy 相当于 Django 框架中 ORM,ORM 主要实现模型对象到关系数据库数据的映射优点只需要面向对象编程,不需要使用sql语言实现数据模型和数据库的解藕,及不用关心是什么数据库,更改简单配置即可更换数据库缺点有部分性能损耗SQLAlchemy 使用SQLAlchemy 的使用和 Django 中的类似,首先要进行配...原创 2019-12-16 14:57:32 · 286 阅读 · 0 评论 -
修改 Flask 中 request.args 不可变字典类型
Flask 里面的 request.args 请求回来的参数是 ImmutableMultiDict 类型,ImmutableMultiDict 是不可变字典,这是为了保证传参的数据安全性。但是某些时候我们需要对其进行操作,例如:将参数中为空串的参数去掉,这时候我们可以使用 dict 将其转变为普通的字典# data type is ImmutableMultiDictdata = dict(...原创 2020-01-16 20:20:55 · 2740 阅读 · 0 评论 -
Flask 组件 Script
flask-script 的作用是可以通过命令行的形式来操作Flask.例如通过命令跑一个开发的服务器、设置数据库等命令的添加方式使用manage.command: 这个方法是用来添加那些不需要传递参数的命令的使用manage.option: 这个方法是用来添加那些需要传递参数的命令的。有几个参数就需要些使用几个参数器。如果有一些命令是针对某一功能的,可以加这些命令放在同一个模...原创 2019-12-16 15:01:52 · 368 阅读 · 0 评论 -
MinIO 如何设置永久分享链接
MinIO 可以被当做一个轻量级的云盘或文件数据库,默认存储在桶里的文件只能分享7天,但是当我想把它当做文件数据库时,就需要将文件分享设置为永久,那么该如何做呢?官方文档在 MinIO Admin 中有对桶的策略进行设置:将桶设置为可永久分享:bucket_policy = { 'Version': '2012-10-17', 'Statement': [ { 'Effect': 'Allow', 'Principal'原创 2022-01-05 11:03:16 · 8376 阅读 · 0 评论 -
Python3 使用 SQLalchemy 如何判断某个字段为空 None
SQLalchemy 是 Python 中的 ORM 模型,在开发的过程中,遇到了如何对字段值进行判空的坑方法一table.name is None 这样的写法 Python 的解释器不会报错,但是结果和预期不符,解释器直接忽略这一行方法二table.name == None 这样的写法是可以通常测试的,但是不符合 PEP8 规范方法三table.name.is_(None)...原创 2020-01-16 20:07:27 · 6526 阅读 · 0 评论 -
Flask 组件 Blueprint
Blueprint 简介:Blueprint 译为蓝图。简单来说,Blueprint 是一个存储操作方法的容器,这些操作在这个Blueprint 被注册到一个应用之后就可以被调用,Flask 可以通过Blueprint来组织URL以及处理请求。Flask 使用 Blueprint 让应用实现模块化,在Flask中,Blueprint具有如下属性:一个应用可以具有多个Blueprint...原创 2019-12-16 13:30:57 · 338 阅读 · 0 评论 -
从 Flask-Script 迁移到 Flask-CLI
一、Flask-Script 已经消亡!曾几何时 Flask-Script 一直都是配合 Flask 应用的利器,你可以在命令行启动项目,还可以配合 Flask-Migrate 做数据迁移,这两个工具一度成为 Flask 项目的必备选项:Flask 组件 Script、Flask 组件 Migrate。但 Flask 从 0.11 开始就内置了 CLI 工具,所有连 Flask-Script 作者都觉得 Flask-Script 没必要在维护下去了。GitHub 上也已经归档了:https://gith原创 2022-01-06 17:47:25 · 1759 阅读 · 0 评论 -
记录一次 docker 环境部署安装 easysnmp 包
一、项目背景最近在做一个扫描数据中心设备(交换机。路由器、防火墙。。。)端口的功能。需要用到 snmp 组件,Python 下有很多实现 snmp 的包,常用的有 pysnmp 和 easysnmp。由于pysnmp 的语法太恶心了,所以果断选择 easysnmp,easysnmp 需要依赖 C 语言的 net-snmp 库,所以速度还是很快的。二、解决过程在开发环境下(Mac 环境)直接使用 pip 安装即可。pip install easysnmp由于整个项目是使用微服务进行开发的,部署是原创 2020-09-08 15:41:27 · 1474 阅读 · 0 评论 -
Flask 框架的简单使用
Flask 简介:Flask是一个Python编写的Web 微框架,让我们可以使用Python语言快速实现一个网站或Web服务,在介绍Flask之前首先来聊下它和Django的联系以及区别,django个大而全的web框架,它内置许多模块,flask是一个小而精的轻量级框架,Django功能大而全,Flask只包含基本的配置, Django的一站式解决的思路,能让开发者不用在开发之前就在选择应...原创 2019-12-16 13:14:44 · 580 阅读 · 0 评论 -
python PyJWT 使用
在程序开发中,用户认证授权是一个绕不过的重难点。以前的开发模式下,cookie 和 session 认证是主流,随着前后端分离的趋势,基于 Token 的认证方式成为主流,而 JWT 是基于 Token 认证方式的一种机制,是实现单点登录认证的一种有效方法PyJWT 是一个用来编码和解码 JWT(JSON Web Tokens) 的 Python 库,也可以用在 Flask 。,PyJWT 用来...原创 2020-01-16 20:42:26 · 9400 阅读 · 1 评论 -
Flask 组件 App、Blueprint、RESTful 配合使用
前几篇文章简单的介绍了 Flask 各个组件 App、Blueprint、RESTful,以及各个组件的使用方法,现在第一道坎是如何将这些组件组合在一起使用PS:App 就是最原始的 Flask 的应用,我统一将这个应用叫做 App,这是为了方便以后集成而人为定义的规范首先,我们按照最原始创建 App 的方法创建应用#!/usr/bin/env python3# -*- coding: U...原创 2019-12-16 14:01:22 · 1341 阅读 · 0 评论 -
Python3 使用 SQLalchemy ORM 模型 upgrade 报错 max key length is 767 bytes
开发背景公司使用 Flask 进行开发,使用 SQLalchemy ORM 模型,在开发环境中 migrate 和 upgrade 正常通过,但是在部署测试环境的时候报了一行错误:sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (1071, 'Specified key was too long; ...原创 2020-01-16 19:56:42 · 489 阅读 · 0 评论 -
Flask 获取用户登录的设备、浏览器以及平台等相关信息
from flask import requestrequest.user_agent # 获取用户登录的设备、浏览器以及平台等相关信息原创 2021-09-18 23:57:40 · 1697 阅读 · 0 评论 -
Flask 组件 RESTful
RESTful 简介:Web 得以如此规模的发展,这和Web诞生之初的架构设计是分不开的。而REST则是用来发现,识别Web的架构模型中,有哪些地方需要改善,哪些地方需要说不的。所以,想要理解REST是什么,必须要站在俯览Web的角度,以Web的上帝视角来看待Web,才能搞清楚REST对Web到底做了些什么。很多的人只关注于restful的web api,以api的角度去理解解释rest,最终只...原创 2019-12-16 13:47:57 · 222 阅读 · 0 评论 -
从 Flask-RESTful 到 Flask-RESTPlus 再到 Flask-RESTX
Django 和 Flask 一直都是 Python 开发 Web 的首选,而 Flask 的微内核更适用于现在的云原生微服务框架。但是 Flask 只是一个微型的 Web 引擎,所以我们需要扩展 Flask 使其发挥出更强悍的功能。Flask-RESTfulFlask-RESTful 就是 Flask 扩展中的佼佼者,它增加了对快速构建 RESTful API 的支持,将 Flask 封装了一层,使其更容易、更快速、更便捷的开发 RESTful API。GitHub:https://github.原创 2022-01-10 17:08:54 · 3444 阅读 · 2 评论 -
Django3.0.6 和 Xadmin2 环境配置
Django3 出来有一段时间了,但是 xadmin 总是跟不上节奏。顺便吐槽一下 Django 的环境,各种乱七八糟的版本,各种不兼容,各种辣鸡问题。。。但是,也阻止不了它快速开发交付的特点,所有才会有这么多人使用吧。Django3.0.6 和 Xadmin2 环境配置因为各种原因导致很乱,所以我把源码修改之后重新打包了,伸手党去直接下载Django3-Xadmin3修复版使用方法:将 Django-3.0.6.tar.gz 和 xadmin-django3.0.6.tar.gz 解压缩,使用 se原创 2020-05-09 11:08:46 · 1169 阅读 · 1 评论 -
Python3 树结构处理库 treelib
#!/usr/bin/env python3# -*- coding: UTF-8 -*-from treelib import Tree, Nodetree = Tree()tree.create_node('1', 1)tree.create_node('1.1', 2, parent=1)tree.create_node('1.2', 3, parent=1)tree.create_node('1.1.1', 4, parent=2)tree.create_node('1.原创 2021-07-15 14:43:24 · 947 阅读 · 0 评论 -
Python3 封装简化 netmiko 包为 sshLib
sshLib.py#!/usr/bin/env python3# -*- coding: UTF-8 -*-from netmiko import ConnectHandlerclass SSHLib(object): def __init__(self, manufacturer, ssh_ip, ssh_port, ssh_username, ssh_password): manufacturer_list = ['huawei', 'h3c']原创 2021-08-27 15:48:51 · 337 阅读 · 0 评论 -
Python3 如何通过 ORM 连接 TiDB
在 Python 开发过程中,可以通过使用 ORM 操作 MySQL 来简化编程。但是随着业务数据越来越多,就需要对数据库进行优化,比如:分库分表、读写分离、分布式等等。因为我使用的是微服务开发模式,分布式天然和我们项目兼容,为了实现分布式数据库,我采用和 MySQL 99.99% 兼容的 TiDB 作为数据库底层。但是,问题随之而来,现有的业务都是通过 ORM 操作 MySQL,那么 Python 用哪个 ORM 库可以实现连接 TiDB 呢?找了好久都没找到,后来突然猛然醒悟!既然 MySQL 99原创 2021-04-23 10:52:38 · 2083 阅读 · 0 评论 -
Python3 gevent 报错 RuntimeWarning: greenlet.greenlet size changed
Python 开发 Flask 项目一般使用 gunicorn 启动,启动时可以指定 sync 或者 gevent 模式,但是在指定 gevent 模式之后,安装了 SkyWalking 之后项目启动报警告:<frozen importlib._bootstrap>:219: RuntimeWarning: greenlet.greenlet size changed, may indicate binary incompatibility. Expected 144 from C heade原创 2021-07-13 16:57:51 · 7270 阅读 · 1 评论 -
Python3 如何开发带命令行的软件包
PyPi(Python Package Index)是一个用于存储 Python 写成的软件包的软件存储库,我们平时用pip安装的库就是来自于 PyPi。我们先来写一个最简单的包,整体代码结构如下:.├── README.md├── demo│ └── __init__.py└── setup.py代码结构中有一个 demo 目录、README.md 文件和 setup.py 文件,demo 目录下只有一个 __init__.py 文件。__init__.py print('Hell原创 2021-03-07 22:42:01 · 408 阅读 · 0 评论 -
PyMySQL 1054 Unknown column None in field list 报错解决
错误很明显,就是告诉你 SQL 没有 None 这个关键字。None 是 Python 语言的空值表示,所以,我们需要将 Python 中的空替换为 SQL 中的空即可。sql = sql.replace("'None'", "NULL").replace("None", "NULL")原创 2020-10-24 15:33:54 · 3684 阅读 · 0 评论 -
SQLAlchemy 两张表联表查询后获取两张表所有的字段
在实际开发中 发现 SQLAlchemy 中的一个问题我想获得一张完整的连结表的结果举个例子:有 Post 和 Follow 两个表格Post 表格有 body 等列Follow 表格有 follower_id 等列在连结 Post 和 Follow 的表后,对其查询我希望获得的查询结果,能包含两个表格里的所有列,这样方便调用data = Post.query.join(Follo...原创 2020-03-07 00:56:22 · 6648 阅读 · 2 评论 -
Python3 使用 consul 作为微服务的注册中心
微服务的注册中心有很多,常用的有 Euerka、Zookeeper、Nacos、Consul 等等,我们使用 Consul 作为微服务的注册中心。启动 Consul我们现在本地搭建一个单点的 Consul 服务(在生产环境中一定是高可用集群)。先从 Consul 官网:https://www.consul.io 下载 Consul,然后启动即可:./consul agent -dev也可以指定参数./consul agent -dev -client 0.0.0.0 -ui启动: Ma原创 2021-07-23 18:06:54 · 2615 阅读 · 1 评论