个人体会,python在web方面的开发,入门不难,也就是说在浏览器输出一个简单的hello world很简单,但要写一些稍大型的复杂的web应用,还是要经过一番折腾和奋斗的。 对于一些习惯了MVC开发模式的人来说,如何设计程序架构就显得尤其重要。
开发一个web应用,必然要涉及到如下两个方面:
web 框架
python web开发框架有很多,如web.py, bottle, pyramid, flask, django, tornado......,至于选择哪一个框架就看个人口味了。但我想主要有一个大的原则:1)该框架社区活跃 2)该框架程序还在维护中 3)有很好的文档。 这样能保证你会有丰富的学习资源, 遇到问题后在各种社区(如stackoverflow, 相关bbs)提问,会有人给你帮助和指导。
当然,如果你足够牛B, 你也可以自己开发框架或者不使用框架。从开发效率方面讲, 我还是建议不要重复造轮子,使用现有框架。
数据库
和其他开发语言一样,python在数据库操作方面的功能也非常强大,你可以使用原生的SQL操作数据库,也可以使用现存的库。目前比较流行的ORM是sqlalchemy(支持sqllite, mysql, postgresql, oracle...) 前面提到的很多web框架都直接提供对sqlalchemy的集成。Sqlalchemy的功能非常强大,光文档就可以出一本厚厚的书了,想完全弄懂它也绝非易事。
当然,也有人觉得sqlalchemy太厚重,有很多几乎使用不到的功能。这里有一些比较轻量级的ORM库,如peewee。从功能上讲,peewee可以看作是sqlalchemy的一个子集,但它提供的功能对于web开发来说(query cache, transaction...),完全够用。最主要的是十分轻量,学习曲线很平,一般人很容易上手。
Pyramid + peewee + cornice方案
1) 我最终并没有选择目前很流行的django, 而是选择了pyramid作为web开发框架
2) 数据库ORM,我选择了比较轻量级的peewee
3) 用cornice 提供resetful API, 给各种设备调用(android,iOS, desktop, browser)
如果您有更好的方案,欢迎建议;如果您有不同的看法,欢迎探讨!