异常简单的一个代码生成器(python)

首先上一段生成的代码,很简单。但数据量很大时候也可以省下一小部分的工作量。#-*-coding:utf-8-*-fromcore.dal.base_handlerimportBaseHandlerclassGroupsHandler(BaseHandler):defselect(self):returnself.db.query("SELECT`g_id`,`g_name`,`create_time`,`status`FROM`groups`ORDERBY`g_id`DESC")defdelete(self,id):returnself.db.execute("DELETEFROM`groups`WHERE`g_id`=%s",id)definsert(self,g_name):returnself.db.execute("INSERTINTO`groups`(`g_name`)VALUE...

精彩继续

python下载数据

亲爱的BSSN给了一个flash游戏的数据库,还给了一个通过wget下载其中flash游戏数据的教程。测试中发现那个教程中wget方式下载数据经常下载到一半碰到出错或者什么原因给自动退出了。趁这两天换工作有点时间,操刀python写了一段小脚本:#-*-coding:utf-8-*-importos.pathimporturllib2defheader(url):headers={'User-Agent':'Mozilla/5.0(Windows;U;WindowsNT6.1;en-US;rv:1.9.1.6)Gecko/20091201Firefox/3.5.6','Referer':'http://www.xxx.net/'}req=urllib2.Request(url=url,headers=headers)result=urllib2.urlopen(req).read()ret...

精彩继续

python所谓文艺短网址生成方式代码

最近都没有写什么python和php的代码,工作非常充实,晚上也没有什么精神继续写代码。今天翻到一段写生成短网址的算法blog,发现俺用的是最2B的随机数方式……为了表示不那么2B,特意写了段生产短地址的在该文章中所写的文艺代码:defshortByHex(url):'''url缩短'''importhashlib_seed="abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"_hex=hashlib.md5(url).hexdigest()_hexLen=len(_hex)_subHexLen=_hexLen/8_output=[]foriinxrange(0,_subHexLen):_subHex=_hex[i*8:i*8+8]_subHex=0x3FFFFFFF&int(1*('0x%s'%_subHex),...

精彩继续

微博把妞利器预览版开源了

痛恨各种年终总结,所以年底不写总结。好久没有更新博客内容了,一则因为最近学习的Java是自己并不是很喜欢的东西,二则是一松弛下来就变的很懒。前一阵申请了SAE的python测试,拖了性浪微博的一个pythonSDK写了一个简单的半成品脚本。名字比较唬人,应用叫做“微博把妞利器”,这个闷骚的名字可能名不副实,不过已经一年多两年没折腾过性浪微博接口了,生疏了很多。微博把妞利器这个东西可以填写你需要关注的微博用户个性域名(不包含http://weibo.com/),然后页面打开状态会自动每隔一分钟(这一版暂定此种方式)抓取一次最后一次微博时间然后显示出来。源代码地址:https://bitbucket.org/chairo/7ats此次代码使用了bottle框架+sinaweibopy如图:因为是短时间作为熟悉性浪微博SDK的产物,请不要期待功能很完善。之后版本预计会增加各种邮件、QQ机器人等方...

精彩继续

给tornado的database.py增加dbutils支持

忘记什么时候在邮件订阅中看到smallfish的一个给tornado的database.py增加dbutils支持的文章了,去smaillfish的blog看了一下居然是09年写的一篇文章。小鱼修改的代码为:defreconnect(self):"""Closestheexistingdatabaseconnectionandre-opensit."""self.close()try:fromDBUtilsimportPooledDBpool_con=PooledDB.PooledDB(creator=MySQLdb,**self._db_args)self._db=pool_con.connection()except:self._db=MySQLdb.connect(**self._db_args)self._db.autocommit(True)小鱼干掉了原有的设置autocommi...

精彩继续

给bottle的jinja2插件自定义filter

书接上文说一下bottle如何自定义jinja2模板引擎的filters。前边咱们说到bottle中使用jinja2_template即等同于template(你传入参数,template_adapter=Jinja2Template),引用一个bottle中template()的关键部分deftemplate(*args,**kwargs):......settings=kwargs.pop('template_settings',{})......TEMPLATES[tpl]=template_adapter(name=tpl,lookup=lookup,**settings)类似这几句代码,代码大概含义就是从template_settings获取内容然后传递给template_adapter对应对象(即咱们使用的Jinja2Template)继续跟进Jinja2Template,Ji...

精彩继续

python的functools.partial用法解释

在使用bottle的jinja2_template过程中碰到了一个自定义filter的问题,其中bottle关于jinja2_template的定义是这样的:jinja2_template=functools.partial(template,template_adapter=Jinja2Template)在.NET中class也是有partial这个概念的,所以从字面理解,jinja2_template应该是template和后边template_adapter=Jinja2Template这个参数之和的结果。官方的解释为:Returnanewpartialobjectwhichwhencalledwillbehavelikefunccalledwiththepositionalargumentsargsandkeywordargumentskeywords.官方给的例子:fromfun...

精彩继续

在免费亚马逊EC2上编译安装nginx+uwsgi+bottle

之前做的Python小站点均是用nginx反代方式,实际使用pythonapp.py方式启动,显着是非常不专业啊。而且效率也没测试过。真正对Python感兴趣时候是从[observer专栏杂记]的使用python爬虫抓站的一些技巧总结等文章开始的。So,之前因为部署uwsgi太麻烦虽然收藏了observer的配置Nginx+uwsgi更方便地部署python应用文章,但一直没有实际去配置过。为了表示不停折腾精神,这几天把网址缩短项目用bottle重写一下(bottle只有一个文件,比tornado轻量多了,反正俺也无需考虑效率问题),部署在一个亚马逊免费的EC2(ElasticComputeCloud)上。此次修改Todolist还包含引入免费的redis(使用redis4you提供的免费5M服务)等。所以趁此从头开始的机会,配置了一下uwsgi。记录下完整安装过程(其中好多安装配置cop...

精彩继续

python property用法

property用来设置/读取一个类的属性,今天用到此方法记录一下备忘。官方文档描述如下:property([fget[,fset[,fdel[,doc]]]])classC(object):def__init__(self):self._x=Nonedefgetx(self):returnself._xdefsetx(self,value):self._x=valuedefdelx(self):delself._xx=property(getx,setx,delx,"I'mthe'x'property.")

精彩继续

Tornado获取客户端IP(补充)

今天发现犯了一个错误,前几天写过一篇“tornado获取客户端IP”,但今天查看数据库中数据时候发现所有的IP均是127.0.0.1(因数据库使用bigint存储,所以数据库中看到IP均是2130706433),在Group中搜索了一下发现Ben以前解释过这个问题BenDarnellTornadosupportsbothx-real-ipandx-forwarded-for,butyouhavetosetxheaders=TrueinyourHTTPServerconstructortohaveitlookateitherofthem.-Ben即tornado支持通过x-real-ip或x-forwarded-for来获取IP,但前提是需要在你的HTTPServer实例中增加xheaders=True参数,如:http_server=tornado.httpserver.HTTPServe...

精彩继续