python作者_Python
最近内部需要实现一个新的HTTP REST服务,数据用JSON。打算用Python来做一个原型,用于比较和Java实现方案的具体差异,以前也没有Python实战经验,所以摸索过程如下。
首先定义协议,假定我们要实现一个群组成员管理的服务
添加成员:
POST http://server/group-user/
users=[1,2,3…]
删除成员:
DELETE http://server/group-user/
users=[1,2,3…]
获取成员:
GET http://server/group-user/
评估了几个python web框架之后,包括django, selector, CherryPy等。
Django安装和看了一些文档之后觉得它类似ruby on rails, 是一个快速的MVC/ORM的框架,相对于一个轻量级的REST服务来说不太适合。
selector文档太少,使用也感觉比较繁琐。
网上相关的讨论也比较少,可能目前REST方式还没大规模应用。正在比较迷茫的时候,看到了web.py的介绍,试用了一下之后,发现是碰到最适合目前需求的,使用也最简单。POST,GET,DELETE,PUT只需要在相应的function实现即可。另外还带了db,form,http等常用的web应用所需的类。
主要源代码:
class group_user:
def __init__(self):
pass
def GET(self, gid):
db = web.database(dbn='mysql', user='user', pw='pass', db='db', host="localhost")
users = db.query('SELECT * FROM groupuser WHERE groupid=$gid', \
vars={'gid':gid})
output = StringIO.StringIO()
output.write("[")
count = 0
for u in users:
if count > 0:
output.write(',')
output.write('["uid":%d,"nickname":%s]' % \
(u['uid'], json.dumps(u['nick'], True, False))
count += 1
output.write("]")
str = output.getvalue()
return str
def POST(self, gid):
data = web.data()
result = urlparse.parse_qs(data)
uid = result['uid'][0]
add_count = 0
list = json.loads(result['users'][0])
for u in list:
add_count += self.add_user(gid, u[0])
return add_count
def DELETE(self, gid):
data = web.data()
result = urlparse.parse_qs(data)
uid = result['uid'][0]
del_count = 0
list = json.loads(result['users'][0])
for u in list:
uid = u[0]
self.del_user(uid)
del_count += 1
return del_coun
几点感想:
原型所需要的功能很精简,开发效率比Java稍快,Java的代码长度可能会是这个1-2倍之间,但是针对这种纯业务逻辑的代码,Python的优势也不是非常明显,一个熟练的Java程序员可以很快完成这个功能。
性能。测试环境下每秒只能执行40-50次,如果用Java实现的话可以轻松上千次。如果性能问题不能调优,可能Python实现的这个功能也只能用来验证原型,没法用在生产环境。
数据库连接是每个function内部都执行一次连接,从Java的角度来看比较低效。
Python 2.6之上自带JSON支持,无须另外寻找JSON库,比较方便。
Python Web框架通过一个WSGI的规范来定义,类似Java的Servlet的规范。
Python的代码强制嵌入的方式看起来比Java更优雅,除了class function定义中要带一个self参数比较怪异。
python作者_Python相关推荐
- python画代码-Python教程_Python画Mandelbrot集 代码
Python教程_Python画Mandelbrot集 代码 作者:Comet 来源: 课课家 www.kokojia.com点击数:278发布时间:2015-06-19 11:17:19 曼德勃罗集 ...
- python编程语言_python编程语言的简要历史
python编程语言 The Python programming language is a general-purpose programming language that has carved ...
- c语言实现爬虫功能,用C/C 扩展Python语言_python 调用c语言 python实现简单爬虫功能_python实现简单爬虫...
用C/C 扩展Python语言 Python是一门功能强大的脚本语言,它的强大不仅表现在功能上,还表现在其扩展性上.她提供大量的API以方便程序员利用C/C++对Python进行扩展.因为执行速度慢几 ...
- 2019最新Python学习教程(Python视频教程_Python学习教程_Python学习路线):你心目中编程界的MVP是谁?
2019最新Python学习教程(Python视频教程_Python学习教程_Python学习路线):你心目中编程界的MVP是谁?编程界的王者是渐落寞的Java还是大火的Python? 是不是你们也喜 ...
- python作者龟叔_Python基础 — Python简介
序言:未来是数据的世界,而python 是一门可以高效简洁处理数据的语言,博主打算花一些时间完成python学习的从0到1.以此相关系列博客作为一个记录. 1. Python简介 Python的发音与 ...
- python作者怎么读_python 读键盘
<树莓派Python编程入门与实战(第2版)>--3.3 安装Python和工具 本节书摘来自异步社区<树莓派Python编程入门与实战(第2版)>一书中的第3章,第3.3节, ...
- 手机写python脚本_python可以写手机脚本么作者老田
如若想在程序中自动建立关联,则须用上API函数,--这个不是本文的主题了class JdbcUtils {for (int i=0; i < size; i++) {应用程序在启动和运行时需要将 ...
- python分句_Python循环中的分句,继续和其他子句
python分句 Python中的循环 (Loops in Python) for loop for循环 while loop while循环 Let's learn how to use contr ...
- python语音识别_Python中的语音识别-完整的入门指南
python语音识别 Welcome to The Complete Beginner's Guide to Speech Recognition in Python. 欢迎使用Python语音识别完 ...
- python可视化_python商业智能可视化
python可视化 Why are visualizations worth thousands of words? They have the power of telling stories an ...
最新文章
- 覆盖半透明黑色CSS,通常用于弹窗提示、弹窗显示大图等情况的背景图层
- 解读生命密码的基本手段 ——DNA测序技术的前世今生
- mysql多实例配置使用方法
- 用faster-rcnn训练自己的数据集(VOC2007格式,python版)
- camunda流程定义表无数据_BPM - 业务流程管理
- 单继承-问题的抛出-单纯封装可能会出现重复的代码
- 当重复调用addsubview时出现显示重叠问题
- 电子商务概论(农)之章节课后题
- linux tcp调优
- Devoxx法国2012天3
- 转 Android屏幕适配全攻略(最权威的官方适配指导)
- python卡方检验关键词,Python卡方检验
- 高通平台 pmic—gpio修改(2)
- 10Bootstrap5徽章
- 利用google or-tools 求解逻辑难题:斑马问题
- 20个数据分析师必会的营销模型,赶紧收藏
- App Zap的非常货币化策略:付费游戏的应用内购买
- Linux(ECS云服务器)
- Xcode发布测试版本,直接通过Safari在线安装ipa
- 如果老板跟你说“爱干就干,不爱干就滚蛋”,你会怎么办?
热门文章
- Kubernetes集群的安装部署
- SpringBoot学习(第一天)
- Interactive Data Display如何显示菜单?
- 多线程并发编程之构建自定义同步工具
- Python学习-9.Python函数定义
- 页面删除android4.0 Launcher仿三星平板workspace页面编辑(即页面增减)
- [生活]我短暂的股票生涯
- 创建型模式专题总结:Creational Pattern(转自Terrylee)
- Python的psutil模块监控内存代码
- MFC字符串CString分割函数 简洁 C++