获取非反复数据
- db['user'].distinct('country')
删除记录
- table.delete(place='Berlin')
- @app.before_request
- def before_request():
- g.requestId = gen_requestId()
- logger.info("Start Once Access, and this requestId is %s" % g.requestId)
履行SQL语句
- result = db.query('SELECT country, COUNT(*) c FROM user GROUP BY country')
- for row in result:
- print(row['country'], row['c'])
导出数据
- result = db['users'].all()
- dataset.freeze(result, format='json', filename='users.json')
连接PostgreSQL数据库:
JSON
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格局,异常易于人浏览和编写。
- import json
json.dumps 将 Python 对象编码成 JSON 字符串
json.loads 将已编码的 JSON 字符串解码为 Python 对象
可以用redirect()函数把用户重定向到其它处所。放弃请求并返回缺点代码,用abort()函数。
MySQL数据库:
分类表-categories,包含类别web,reversing,crypto(加解密),mic等
标题表-tasks,包含标题id,标题名,flag,分值,文件&地址,标题等级,标题具体描述
flag表-flag,包含标题id,用户id,得分,时光戳
用户表-users,包含用户id,用户名,暗码
标题分类表-cat_task,包含标题id,题浏览别id
flag表中每条数据因为是有标题ID task_id和用户ID user_id来合营确认的,所以采取复合主键:primary key (task_id,user_id)
结合主键和复合主键的差别
python装潢器
Decorator经由过程返回包装对象实现借居调用,以此插入额外逻辑
https://www.zhihu.com/question/26930016
wraps本身也是一个装潢器,它能把原函数的元信息拷贝到装潢器函数中,这使得装潢器函数也有和原函数一样的元信息了
- from functools import wraps
- def logged(func):
- @wraps(func)
- def with_logging(*args,**kwargs):
- print func.__name__ + "was called"
- return func(*args,**kwargs)
- return with_logging
- @logged
- def f(x):
- """does some math"""
推荐阅读
沙龙晃荡 | 去哪儿、陌陌、ThoughtWorks在主动化运维中的实践!10.28不见不散! 而Sapienz对象的工作方法是如许的。上班族会在日间进行正常的工作义务,并且申报他们发明的任何软件马脚。在>>>详细阅读
地址:http://www.17bianji.com/lsqh/38023.html
1/2 1