https://qn.chenzqi.cn/chenshen/logo.png

Scrapy process_item方法写入数据库记录

pipelines.py class MysqlPipeline(): def __init__(self, host, database, user, password, port): self.host = host self.database = database self.user = user self.password = password self.port = port @classmethod def from_crawler(cls, crawler): return cls( host=crawler.settings.get('MYSQL_HOST'), database=crawler.settings.get('MYSQL_DATABASE'), user=crawler.settings.get('MYSQL_USER'), password=crawler.settings.get('MYSQL_PASSWORD'), port=crawler.settings.get('MYSQL_PORT'), ) def open_spider(self, spider): self.db = pymysql.connect(self.host, self.user, self.password, self.database, charset='utf8', port=self.port) self.cursor = self.db.cursor() def close_spider(self, spider): self.db.close() def process_item(self, item, spider): data = dict(item) # data['imgs'] = data['image_paths'][0] # del data['image_paths'] com_id

Flask全局异常处理

:::tip Flask自定义全局响应类 ::: api的设计中, 无论异常还是正常数据均需要服务器以json的格式返回, 为了对异常的统一管理, 同时为了后续更加方

Flask模型序列化

:::tip Flask重写模型序列化 ::: 使用过的序列化方式 在模型定义的时候给序列化的方法 继承 flask 里面的 JSONEncoder类以及default方法 自定义

Flask配置项目日志

把日志相关的配置封装成一个日志初始化函数 import logging from logging.handlers import RotatingFileHandler ...... def setup_log(config_name): dir_file = os.path.abspath(__file__) dir_info = os.path.dirname(dir_file) dir_base = os.path.dirname(dir_info) dir_log = os.path.join(dir_base, 'logs/log') # 设置日志的记录等级 logging.basicConfig(level=config_dict[config_name].LOG_LEVEL) # 调试debug级 # 创建日志记录器

Flask项目结构基础骨架

开发中经常用到的项目结构示例 创建shell脚本 使用 shell 脚本快速生成项目基础骨架 脚本文件下载 提取码:xjxe 将下面的脚本保存为文件 generate_flask_boilerplate.sh # !/bin/bash dirname=$1 if [ !

Flask-Cache缓存动参GET请求

自定义动态参数缓存键 1 def make_cache_key(): args = request.args key = request.path + '?' + urllib.parse.urlencode([ (k, v) for k in sorted(args) for v in sorted(args.getlist(k)) ]) return key 复杂,好处是即使表单数据顺序打乱,在转换为cache_key时也so