python 笔记

时区:

                    def set_tz_daily(x):
                        """
                        时区设置
                        :param x:
                        :return:
                        """
                        tz = pytz.timezone('Asia/Shanghai')
                        dt = pytz.datetime.datetime.fromtimestamp(x, tz)
                        r = dt.strftime('%Y-%m-%d %H:%M:%S')
                        return r

admin 自定义模型管理器

class UnHandleManager(models.Manager):

    def bulk_create_or_update(self, objs=None, fields=None, **kwargs):
        db = kwargs.get("db", None)
        ids = [obj.id for obj in objs]
        # 判断是批量创建还是更新
        data_exist_keys = super().using(db).in_bulk(id_list=ids).keys()
        data_create = []
        data_update = []
        for obj in objs:
            if obj.id in data_exist_keys:
                data_update.append(obj)
            else:
                data_create.append(obj)
        super().using(db).bulk_create(data_create)
        super().using(db).bulk_update(data_update, fields=fields)

class RawDataUnHandle(models.Model):
    """
    原始非操岔时数据表,包括正常和异常数据
    """
    # 自定义管理器
    objects_cus = UnHandleManager()

# 使用
self.model.objects_cus.bulk_create_or_update \
                (self.raw_un_handle_data_list, fields=['line_id', 'station_id',
                                                       'station_name', 'batch_id', 'switch_code', 'turnout_code',
                                                       'data_type_code',
                                                       'data_type', 'collection_time', 'actual_value'], db=self.name_en)

日志配置

# -*- coding: utf-8 -*-
# time: 2022/10/26 11:28
# file: log.py
# author: YH

import os
from pathlib import Path
import datetime
import logging.config

MEDIA_ROOT = Path(__file__).resolve().parent.parent.parent.parent
LOGGING_DIR = Path(os.getenv("LOG_DIR", str(MEDIA_ROOT / 'logs')))
INFO_LOGGING_DIR = os.path.join(LOGGING_DIR, "info")
ERROR_LOGGING_DIR = os.path.join(LOGGING_DIR, "error")
WARN_LOGGING_DIR = os.path.join(LOGGING_DIR, "warn")

os.makedirs(INFO_LOGGING_DIR, exist_ok=True)
os.makedirs(ERROR_LOGGING_DIR, exist_ok=True)
os.makedirs(WARN_LOGGING_DIR, exist_ok=True)

#  配置日志
logging_config = {
    'version': 1,
    'disable_existing_loggers': False,  # 不使其他日志失效
    'formatters': {  # 日志格式化器
        'default': {
            'datefmt': '%Y-%m-%d %H:%M:%S',
            'format': '[%(asctime)s] [%(pathname)s:%(lineno)d] '
                      '[%(levelname)s]- %(message)s',
            # '[%(asctime)s] [%(pathname)s:%(lineno)d] [%(levelname)s]- %(message)s',
            # '[%(时间)s] [%(完整文件名)s:%(多少行)d] [%(日志级别)s]- %(自定义内容)s',
        },
    },
    'handlers': {  # 日志处理器
        'console': {  # 标准输出输出
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
            'formatter': 'default'
        },
        'file': {  # 输出到文件
            'level': 'DEBUG',
            'class': 'logging.handlers.TimedRotatingFileHandler',  # 所使用的处理类,这个类可以固定时间开始新的日志,保存原来的日志
            'formatter': 'default',
            'when': "d",  # 时间单位可以是h, d, m , y
            'interval': 1,  # 单位数量,多长时间开始新的记录
            'backupCount': 30,  # 能保存的最大日志文件数量
            'filename': '%s/mylog_info_%s.log ' % (INFO_LOGGING_DIR, datetime.datetime.today().date()),  # 具体日志文件的名字
        },
        'error_file': {
            'level': 'DEBUG',
            'class': 'logging.handlers.TimedRotatingFileHandler',  # 所使用的处理类,这个类可以固定时间开始新的日志,保存原来的日志
            'formatter': 'default',
            'when': "d",  # 时间单位可以是h, d, m , y
            'interval': 1,  # 单位数量,多长时间开始新的记录
            'backupCount': 30,  # 能保存的最大日志文件数量
            'filename': '%s/mylog_error_%s.log ' % (ERROR_LOGGING_DIR, datetime.datetime.today().date()),  # 具体日志文件的名字
        },
        'warn_file': {
            'level': 'DEBUG',
            'class': 'logging.handlers.TimedRotatingFileHandler',  # 所使用的处理类,这个类可以固定时间开始新的日志,保存原来的日志
            'formatter': 'default',
            'when': "d",  # 时间单位可以是h, d, m , y
            'interval': 1,  # 单位数量,多长时间开始新的记录
            'backupCount': 30,  # 能保存的最大日志文件数量
            'filename': '%s/mylog_warn_%s.log ' % (WARN_LOGGING_DIR, datetime.datetime.today().date()),  # 具体日志文件的名字
        }
    },
    'loggers': {  # 日志记录器
        'StreamLogger': {
            'handlers': ['console'],  # 所使用的处理器
            'level': 'DEBUG',
        },
        'InfoFileLogger': {
            # 既有 console Handler,还有 file Handler
            'handlers': ['console', 'file'],
            'level': 'DEBUG',
        },
        'ErrorFileLogger': {
            # 既有 console Handler,还有 file Handler
            'handlers': ['console', 'error_file'],
            'level': 'DEBUG',
        },
        'WarnFileLogger': {
            # 既有 console Handler,还有 file Handler
            'handlers': ['console', 'warn_file'],
            'level': 'DEBUG',
        },
    }
}
# 加载配置
logging.config.dictConfig(logging_config)
# 实例化logger 加载loggers的配置
info_logger = logging.getLogger("InfoFileLogger")
error_logger = logging.getLogger("ErrorFileLogger")
warn_logger = logging.getLogger("WarnFileLogger")

修改pip 源

进入路径:C:\Users\15723\AppData\Roaming\pip 中,如果没有pip,则自己创建,然后创建pip.ini 文件,内容:

[global]
timeout = 6000
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host = pypi.tuna.tsinghua.edu.cn

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值