2016年4月10日 星期日 阴,雾霾
惊悉新浪SAE又多收费了,凡是用Mysql的应用,每天至少要交2×24=48颗云豆的租金。新浪为什么经常干这种事呢?用户会不会怀疑哪天又开始另找名目多收云豆?
这跟食堂打菜员给人打菜一样,即使都是同样多的份量,打两次给到位给和打一大堆到了最后又拨出来,这给人的感觉是不一样的。
其他应用的Mysql都关了,就剩下这个blog占的云豆比较多,一天要烧49.53颗云豆,其中Mysql就占了48颗。我的云豆不多,上面还有程序要支撑至少到2017年国庆,所以先忍了。这周断断续续修改程序,把这个博客的数据库由Mysql改为纯KVDB的了。
我不是很喜欢GAE的数据库,也不喜欢Mysql,我个人比较喜欢NOSQL。我觉得NoSQL在很多场合可以适用,性能也一点都不差,使用也很灵活,调用简单。
- 可以存储string、dict、list、list of dict等多种类型,自己组织编解码就可以了,参考代码如下。
- python的list支持切片、排序,所以kvdb也可以很容易排序或者选择部分数据。
[code] import sys reload(sys) sys.setdefaultencoding(‘utf-8’)#不想中文报错就加上
def encode_dict(my_dict): newdict = {} for k in my_dict: newdict[str(k)] = my_dict[k].encode(‘utf-8’) if isinstance(my_dict[k], unicode) else str(my_dict[k]) return “\x1e”.join("%s\x1f%s" % x for x in newdict.iteritems())
def decode_dict(my_string): return dict(x.split("\x1f") for x in my_string.split("\x1e"))
编码list
def encode_list(my_list): return “\x1e”.join(str(x) for x in my_list)
解码list
def decode_list(my_string): return list(my_string.split("\x1e"))
编码字典list
def encode_dictlist(my_list): return “\x1a”.join(encode_dict(x) for x in my_list)
解码字典list
def decode_dictlist(my_string): tmplist = [] for item in my_string.split("\x1a"): tmplist.append(decode_dict(item)) return tmplist[/code]
博客代码回头等测试差不多了,我再整理新的程序开源到Github上。
...