sqlalchemy序列化为json


为什么需要这个需求?

sqlalchemy 是个好东西,虽然其文档犹如/老太婆的裹脚布--又臭又长/,饱受诟病

使用 restful 时sqlalchemy返回的是一个 object 类,假设前后端分离,前端无法处理

如何实现?

直接给出代码

class Serializer(object):

    def __init__(self, instance, many=False, include=[], exclude=[], depth=2):
        self.instance = instance
        self.many = many
        self.include = include
        self.exclude = exclude
        self.depth = depth

    @property
    def data(self):
        if self.include and self.exclude …

利用网易云api获取歌曲信息


最近是增加了一个aplayer在网站上,但原本想要使用qiniu存储,最后觉得太麻烦了,直接利用网易云api获取歌曲

使用python标准库urllib

直接给出代码

from urllib import request
import json

id = '28819878'
url = "http://music.163.com/api/song/detail/?id=" + id + "&ids=%5B" + id + "%5D&csrf_token"
rep = request.urlopen(url).read().decode('UTF-8')
rep = json.loads(rep)['songs'][0]
name = rep['name']
artist = rep['artists'][0]['name']
mp3url = rep['mp3Url']
picurl = rep['album']['blurPicUrl']
print('name:', name)
print('artists …

常用正则表达式


python复习--装饰器


一个装饰器

from functools import wrapper

def log(func):
    @wraps(func)
    def wrapper(*args, **kw):
        print('call %s():' % func.__name__)
        return func(*args, **kw)
    return wrapper

或者针对带参数的decorator:

def log(text):
    def decorator(func):
        @wraps(func)
        def wrapper(*args, **kw):
            print('%s %s():' % (text, func.__name__))
            return func(*args, **kw)
        return wrapper
    return decorator

sqlalchemy常见数据类型及配置


类型名称 python类型 描述
Integer int 常规整形,通常为32位
SmallInteger int 短整形,通常为16位
BigInteger int或long 精度不受限整形
Float float 浮点数
Numeric decimal.Decimal 定点数
String str 可变长度字符串
Text str 可变长度字符串,适合大量文本
Unicode unicode 可变长度Unicode字符串
Boolean bool 布尔型
Date datetime.date 日期类型
Time datetime.time 时间类型
Interval datetime.timedelta 时间间隔
Enum str 字符列表
PickleType 任意Python对象 自动Pickle序列化
LargeBinary str 二进制

可选参数 描述

  • primarykey

    如果设置为True,则为该列表的主键

  • unique

    如果设置为True,该列不允许相同值

  • index …

python的os模块学习


如何安装及使用honmaple社区程序


如何安装及使用

安装需要的package

pip install -r requirements.txt

配置config

查看配置详细介绍

注释下面代码

因为如果不注释的话 初始化数据库 会报错

文件位置: maple/topic/forms.py

category = SelectField(
    _('Category:'),
    choices=[(b.id …

centos7安装python3及pip3


Table of Contents

安装Python3

安装python3很简单

  • 下载源码并且编译
  • 安装epel

这里采用第二种方法:

yum install epel-release

安装完成之后,yum list python3*,你就可以看见 python34

yum install python34

安装pip3

参考问题 如果在上述安装 python3时采用了第二种方法,pip默认未安装,而且无法通过yum install python34-pip来安装

正确的方法应该是:

yum install python34-setuptools
easy_install-3.4 pip # 这里可能有一些出入,总之是使用python3的easy_install

ok,就这样

记录pip安装时报的错


Table of Contents

Pillow

ValueError: jpeg is required unless explicitly disabled using --disable-jpeg, aborting

    ----------------------------------------
Command "/home/***/***/venv/bin/python3.4 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-k9djbrwk/Pillow/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-i_zr9z4a-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/***/***/venv/include/site/python3.4 …

flask时间格式化


在前端显示为该问题 "几分钟前发表或几天前发表"

后端通过filter注册

参考资料

设计需求

  • 如果问题发表超过 10天 ,则显示为 /%Y-%m-%d %H:%M/
  • 如果小于 10天 ,但是大于 1天 ,则显示为 /n天前/ 发表
  • 如果小于 1天 ,但是大于 1小时 ,则显示为 /n小时前/ 发表
  • 如果小于 1小时 ,但是大于 90秒 ,则显示为 /n分钟前/ 发表
  • 如果小于 90秒 ,则显示为 /刚刚/ 发表

具体实现

通过 diff.daysdiff.seconds 实现

比如,大于10天

if diff.days > 10:
    return dt.strftime('%Y-%m- …