
Python
文章平均质量分 62
人生苦短,我用Python
DexterLien
这个作者很懒,什么都没留下…
展开
-
Gunicorn+nginx+supervisord部署Flask项目记录
环境介绍系统:Ubuntu 18.04 LTSPython:3.6.8安装三件套$ pip3 install gunicorn supervisor$ sudo apt install nginx配置nginxUbuntu下的nginx配置文件放在这个位置:/etc/nginx/sites-enabled/default$ sudo vim /etc/nginx/sites-en...原创 2019-10-26 18:39:49 · 782 阅读 · 0 评论 -
使用国内 pip 镜像
之前常用的豆瓣镜像已经重定向到了腾讯.原创 2019-12-01 23:16:34 · 668 阅读 · 1 评论 -
Flask + Pear Admin Layui 快速开发管理后台
Flask 就不用过多介绍了, Pear Admin Layui 是基于 Layui 的一套管理后台前端开源模板, 主打一个开箱即用, 对于不喜欢 React/Vue 等这些还需要大量学习成本的前端开发者来说, 可以说是相当友好了.项目官网:项目的作者其实也提供了 Flask 集成的项目。原创 2025-04-06 01:40:20 · 395 阅读 · 0 评论 -
uv vs pip 速度实测
前文介绍了 uv 的主要使用过程. 相较于传统的pip不仅是功能更丰富, 速度也是嘎嘎快. 本文就来做一个实际速度测试对比. 以下测试均使用, 在 Docker 环境中分别启动新的容器进行无本地缓存的冷安装. 使用 Docker 镜像, 内置 Python 版本 3.9.20, 记录创建虚拟环境以及安装 pandas, boto3, flask 的用时.原创 2025-03-30 23:27:17 · 418 阅读 · 0 评论 -
使用 uv 管理 Python 项目
首先, uv 工具是使用 rust 开发出来的, 速度要比传统的pippipx等一众包管理工具要快不少. 另外, 除了包管理之外, uv 还提供了脚手架的功能, 使用体验和前端开发使用过的vue-cli本文将在 WSL Ubuntu 环境中以一个简单的 Flask 项目作为示范, 使用 uv 对项目的整个生命周期进行管理.原创 2025-03-30 23:23:22 · 838 阅读 · 0 评论 -
Windows 添加自定义服务实现开机(用户登录之前)自动运行 Python 脚本
使用 Python 编写的一个脚本, 希望在 Windows 系统启动时, 用户登录之前就自动运行.原创 2024-08-04 14:11:01 · 496 阅读 · 0 评论 -
AWS Lambda + Flask 应用示例
AWS Lambda 本身是一个以事件驱动的 Serverless 服务, 最简单的应用就是在入口函数中对接收到的事件/请求进行处理并返回响应. 对于像 Flask 这样的 Web 框架, 并不能直接在 Lambda 上提供服务, 不过我们可以借助实现一个基于 Flask 框架的 Web 后端服务. Lambda 前面再放上一个 API Gateway 即可完成一套完整的 Serverless Web 应用服务.原创 2024-06-18 00:29:44 · 1083 阅读 · 0 评论 -
删除误提交的 git commit
某次的意外 commit 中误将密码写到代码中并且 push 到了 remote repo 里面, 本文将围绕这个场景讨论如何弥补.原创 2023-12-06 00:02:03 · 1732 阅读 · 0 评论 -
AWS Lambda 操作 RDS 示例
创建一个 Lambda 接收调用时传入的数据, 写入 RDS 数据库Post。原创 2023-10-21 16:33:55 · 1401 阅读 · 0 评论 -
Python 轻量 ORM peewee 上手
有时候需要用 Python 直接操作数据库, 手工撸 SQL 倒也不是不能行, 但是总觉得有点背离了的初心, 习惯了SQLAlchemy的直接操作后, 就变懒了. 但是对于比较简单的数据库操作场景, 再跑一套SQLAlchemy又显得有些臃肿, 这次上手轻量 Python ORM 选手peewee。原创 2023-10-21 02:21:27 · 486 阅读 · 0 评论 -
使用 sonarqube 进行代码质量检查
使用 sonarqube 对项目代码质量进行分析检查原创 2023-10-01 14:37:14 · 307 阅读 · 0 评论 -
opencv 处理扫描件移除灰色背景图
【代码】opencv 处理扫描件移除灰色背景图。原创 2023-09-13 20:05:02 · 772 阅读 · 0 评论 -
使用 multiprocessing 多进程处理批量数据
创建进程池, 传入的参数是要要使用的 CPU 内核数量, 直接用。可以直接将处理后的结果拼接成一个 list 对象。可以拿到当前硬件配置所有的 CPU 内核数.原创 2023-09-09 20:47:12 · 665 阅读 · 0 评论 -
Python Asyncio 调用 CPU 多核工作
Python 的 Asyncio 适合异步处理 IO 密集型的事务, 比如 HTTP 请求, 磁盘读写, 数据库操作等场景. 如果使用传统的顺序执行代码, 需要等待每次 IO 事务进行完成后才可以继续后面的代码. 通过在定义函数时添加修饰词async可以将其设置为异步函数, 后续配合 Asyncio 可以实现多线程并行提高代码的运行效率.原创 2023-09-09 16:42:14 · 1159 阅读 · 0 评论 -
Docker 部署 Flask 应用示例
需要访问mariadb数据库, 简单的设计一个user表来存放用户信息原创 2023-06-06 22:45:36 · 339 阅读 · 0 评论 -
使用 Flask-Login 实现用户认证
【代码】使用 Flask-Login 实现用户认证。原创 2023-03-11 14:08:02 · 352 阅读 · 0 评论 -
Python3操作Outlook日历创建事件
使用Python操作Outlook日历创建事件原创 2022-06-05 21:30:33 · 1190 阅读 · 2 评论 -
使用zipfile/BytetesIO实现在内存中创建zip压缩文件
需求描述Flask开发的系统后台需要将一些程序中生成的文本数据和二进制的内存对象打包成zip文件提供给客户端从浏览器直接下载,刚开始的思路是先分别将文本和二进制的数据写到磁盘上,打包后再当成临时文件进行删除,但是感觉这样好像有点啰嗦,而且效率会比较低,研究了一下其实可以直接在内存中完成这些操作并直接扔给Flask的send_file发给客户端浏览器.实现过程import ioimport zipfile# 模拟数据txt1 = 'Hello'txt2 = 'World'bin1 = b'x原创 2021-11-06 17:03:53 · 1362 阅读 · 0 评论 -
使用Python+Flask开发桌面应用的新选择-flaskwebgui
前言之前分别用过了eel, pywebview进行桌面应用开发, 但是都有不太理想的地方, eel没有对flask的原生支持, 而pywebview虽然可以直接将flask的实例对象进行传递, 用起来也挺方便, 不过在调用浏览器引擎方面有点难受, 要么用cef, 就得带进去一大堆依赖, 如果用pyinstaller打包后还会出现各种跑不起来的坑, 要么就是用IE内核, 那简直要了亲命的, 还不能指定调用外部的Chrome浏览器进行渲染, 很是尴尬…要是能有一个轮子结合eel和pywebview的优点, 可原创 2021-06-07 20:02:44 · 11293 阅读 · 41 评论 -
pywebview全屏模式下实现程序退出
参考stackoverflow上的问题:https://stackoverflow.com/questions/65279193/how-to-close-pywebview-window-from-javascript-using-pywebview-api直接上代码吧, 看注释import sqlite3import webviewfrom flask import Flask, render_templateapp = Flask(__name__)conn = sqlite3.co原创 2021-05-21 21:29:07 · 1491 阅读 · 0 评论 -
SQLAlchemy中Model的抽象继承
需求描述在使用SQLAlchemy进行类定义的时候通常是直接继承自Model, 例如下面代码:from flask_sqlalchemy import SQLAlchemydb = SQLAlchemy()class RoleModel(db.Model): __tablename__ = 'sys_role' id = db.Column(db.Integer, primary_key=True, autoincrement=True) rolename = db.Co原创 2021-04-17 18:30:45 · 2388 阅读 · 0 评论 -
Python操作SIM800C发送中文短信
其他地方找的文档中的操作步骤发送一条中文短信,使用以下指令AT+CMGF=1AT+CSMP=17,167,2,25AT+CSCS=”UCS2” AT+CMGS=”00310030003000380036” // 10086 的 unicode 码, 16进制中文短信的 unicode 码(16进制无空格)0X1A实现步骤...原创 2021-01-29 16:38:35 · 3673 阅读 · 7 评论 -
Flask+pywebview开发桌面应用实战记录
上集回顾1年前研究了用pywebview做桌面应用的开发:Python使用pywebview开发桌面应用当时只是浅尝辄止了下, 没有完整的实现过什么项目, 时间长了也有点生疏了, 最近正好有时间, 再复习一下顺带记录实现一个完整的小应用的过程, 好了,唠叨结束开始撸~????????????实现目标目标是实现一个单机通讯录桌面程序, 界面和功能部分用flask和layui来实现, 这一块内容涉及到的主要是flask做web开发, 就不展开描述了, 完整的项目代码开源到gitee上了, 可以自行围观,原创 2021-01-08 21:09:39 · 6841 阅读 · 0 评论 -
Flask使用nginx反向代理后获取客户端真实IP地址
使用nginx反向代理服务器端接受到的80端口请求扔给本地跑的flask应用8001端口,结果在flask应用中如果直接使用request.remote_addr拿到的地址都是127.0.0.1, 经过一番探索, 发现不能用remote_addr, 而应该用request.headers['X-Forwarded-For']来获取客户端真实的IP地址, 下面附上相关配置和代码nginx配置server { listen 80; server_name localhost;原创 2020-11-03 17:55:49 · 1835 阅读 · 0 评论 -
触动精灵将图片转成base64字符串后通过post方式上传给服务器
触动精灵使用lua实现对手机的自动化操作, 比按键精灵好用, 现在有个小需求就是对手机截屏后将图片通过post方式提交到服务器端.lua代码python用习惯了, 再写lua的代码总感觉有点别扭, 有些语法还得再翻翻文档,这里再复习一下常用的操作:字符串拼接使用.., 例如"hello".." world"调用对象对应的方法需要用冒号,比如var_a:func()表(字典)定义语法和python唯一的区别是key不用加引号,后面=值, 例如table={id=1, value="wtf"}.原创 2020-09-25 20:53:26 · 4361 阅读 · 3 评论 -
使用splinter+requests批量下载微信公众号中的音频文件
需求分析晚上老妈微信上给发了个豫剧公众号的链接,要我帮她下载到U盘上打开看了下,页面还比较规矩,可以直接用CSS选择器晒出来列表链接地址,再进行遍历获取.这里遇到一个小坑:公众号中内嵌音频文件不会直接在页面中加载<audio>标签,只有在点击播放按钮后才会出来,所以就不能直接解析HTML页面了,用splinter来操作Chrome模拟鼠标点击后再解析页面就可以咯。代码没几行,直接看注释就可以了。环境依赖Python 3.6+requestssplinterchromedrive原创 2020-09-22 00:18:41 · 1780 阅读 · 9 评论 -
PyCharm自动创建新Python文件的头部注释
Settings>Editor>File and Code Templates>Python Script修改内容如下"""@Description : @File : ${NAME}.py@Project : ${PROJECT_NAME}@Time : ${DATE} ${TIME}@Author : Dexter Lien@Software : ${PRODUCT_NAME}"""原创 2020-08-12 18:29:35 · 903 阅读 · 0 评论 -
Flask-WTF制作复杂表单例子
需求分析需要设计下图所示的一个表单,其中前三项基本表单内容很好整,但是后面的表格需要在渲染的时候就输出好指定单位列表,每个单位一行要采集的数据渲染结果的HTML代码中为表格中每一行重复出现的表单控件的id和name属性自动进行编号实现代码"""@Description : 问卷表单类@File : wenjuan.py@Project : investigation@Time : 2020/7/12 18:28@Author : Dexte原创 2020-07-12 20:18:19 · 1377 阅读 · 0 评论 -
Python3动态加载模块
一般使用import加载模块的写法:# 从statis/gongye.py中加载Data类并赋予别名datafrom statis.gongye import Data as data如果要加载的gongye是一个字符串变量,那么使用动态加载的写法:zy = 'gongye'_imp = __import__(f'statis.{zy}', fromlist=['Data'])data = _imp.Data...原创 2020-07-07 11:47:52 · 645 阅读 · 0 评论 -
使用captcha生成随机验证码
Github官方仓库https://github.com/lepture/captcha使用方法安装轮子pip install captcha调用过程import base64import randomimport stringfrom io import BytesIOfrom captcha.image import ImageCaptchaimage = ImageCaptcha( # 宽度 width=180, # 高度 height=80原创 2020-06-02 20:40:40 · 1080 阅读 · 0 评论 -
使用Python3实现树莓派+摄像头循环监控录像
实现效果使用opencv调用USB外置摄像头进行循环录像,视频分段录制后进行保存(代码中是每5分钟存一下),当tf卡的可用空间不足50%的时候删除已保存视频最早的文件,然后继续新的录制依赖轮子opencv-python 图像处理必备logzero 日志记录神器完整代码#!/usr/bin/env python3import globimport osfrom datetime import datetimeimport cv2import logzerofrom logzero原创 2020-06-01 22:04:28 · 3316 阅读 · 8 评论 -
Python3使用opencv调用摄像头录制高清视频
安装依赖pip3 install opencv-python示例代码import cv2FILENAME = 'myvideo.avi'WIDTH = 1280HEIGHT = 720FPS = 24# 必须指定CAP_DSHOW(Direct Show)参数初始化摄像头,否则无法使用更高分辨率cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)cap.set(cv2.CAP_PROP_FRAME_WIDTH, WIDTH)cap.set(cv2.CA原创 2020-05-31 20:30:58 · 4417 阅读 · 0 评论 -
pymongo使用BSON类型存取(图片)文件
Mongodb可以使用BSON格式来保存大小不超过16M的二进制文件,很适合用来存放web中的图片资源,记录一下操作BSON格式的方法本地文件写入Pymongo/Pymongo数据写回本地文件"""@File : file_demo.py@Description : 本地文件写入Pymongo/Pymongo数据写回本地文件@Time : 2020/4/7...原创 2020-04-08 00:46:31 · 2339 阅读 · 2 评论 -
使用腾讯地图批量转换地址为经纬度坐标
前言两年前写过一篇使用R+百度地图批量获取经纬度坐标的文章https://blog.youkuaiyun.com/lpwmm/article/details/79202592,后来挺多人反馈按照文档操作后无法获拿到坐标数据,貌似是百度地图API的AK码中间经历过升级,而且github上badbye作者写的那个baidumap库也好久没有更新过了,于是决定换用腾讯地图的开放平台再做一篇攻略,相比较之下,腾讯地...原创 2020-04-04 18:43:56 · 15265 阅读 · 17 评论 -
list根据另外一个list进行排序
需求描述现在有两个list对象,b是a的子集:a = ['市辖区', '文峰区', '北关区', '殷都区', '龙安区', '安阳县', '汤阴县', '内黄县', '林州市', '高新区']b = ['内黄县', '北关区', '安阳县', '文峰区', '林州市', '殷都区', '汤阴县', '高新区', '龙安区']想要让b依照a中的顺序进行重新排序实现方法分步实现# ...原创 2020-02-22 19:02:08 · 1893 阅读 · 0 评论 -
正则校验日期月份1-12范围,天数1-31范围
校验1-12数字范围:(?:1[0-2]|[1-9])校验1-31数字范围([1-9]|[1-2]\d|3[0-1])原创 2020-02-05 05:47:53 · 4287 阅读 · 0 评论 -
SqlAlchemy不使用外键创建Relationship
In [2]: class A(Base): ...: a_id = Column(Integer, primary_key=True) ...: __tablename__ = 'a' ...: In [3]: class C(Base): ...: c_id = Column(Integer, primary_key=True) ...原创 2020-02-05 04:40:59 · 1788 阅读 · 1 评论 -
Gunicorn多worker跑Flask应用Session数据共享问题
问题描述使用Gunicorn设置多个worker跑flask应用后发现session状态存在各种紊乱的情况,使用session保存的用户登录状态过一会儿就丢失了,如果直接用python app.py跑的话一点问题也没有,日志中也看不出来有什么错误.原因分析Gunicorn中的worker实际上对应的是多进程,默认配置每个worker之间是独立存在的进程,也就是说每个worker会实例化一个新...原创 2020-01-13 01:31:59 · 3800 阅读 · 1 评论 -
Flask-Alchemy查询结果使用Pandas转为xlsx给Flask直接下载
背景介绍标题有点绕…不过确实是这么回事:Flask里面用Alchemy进行ORM数据映射后指定条件查询用户表>扔给Pandas实例化DataFrame对象>调用DataFrame的to_excel()方法将转换的xlsx文件数据存放在内存中的一个BytesIO对象中>再生成response响应返回给浏览器好吧,我觉得时间长了我怕自己都记不清当时是在干什么了,不嫌啰嗦~...原创 2019-12-23 23:48:59 · 1556 阅读 · 1 评论 -
Pandas中的DataFrame转换为Flask可以输出的json对象
背景Pandas中的DataFrame对象可以使用内置的.to_json()方法转换为json格式的字符串,但是如果直接将这个字符串通过Flask返回给浏览器的话,看到的只是个字符串,并不是json对象.@bp.route('/detail')def get_detail(): # 省略df的创建过程 jdata = df.to_json(orient='records', ...原创 2019-12-20 17:27:42 · 2830 阅读 · 0 评论