最近闲来蛋疼,看见众人都在玩python,于是自己也没事看了看,搞出一个简单的小脚本。俺是python新手,如果有很多地方 不规范或者有错误,请指出!

mysql和memcache的安装我就不说了,网上大把教程

首先看表结构

  1. CREATE TABLE `slevin` ( 
  2.   `id` int(5) NOT NULL DEFAULT '0'
  3.   `namechar(10) DEFAULT NULL
  4.   PRIMARY KEY (`id`) 
  5. ) ENGINE=InnoDB DEFAULT CHARSET=latin1 

查看表的内容

  1. mysql> select * from slevin; 
  2. +----+------+ 
  3. | id | name | 
  4. +----+------+ 
  5. |  1 | o    | 
  6. |  2 | h    | 
  7. |  3 | c    | 
  8. |  4 | d    | 
  9. |  5 | e    | 
  10. |  6 | f    | 
  11. |  7 | a    | 
  12. |  8 | b    | 
  13. |  9 | c    | 
  14. | 10 | d    | 
  15. | 11 | e    | 
  16. | 12 | f    | 
  17. +----+------+ 
  18. 12 rows in set (0.00 sec) 

以下是python操作memcache的脚本

 

  1. import  MySQLdb, memcache, hashlib 
  2. import MySQLdb.cursors
  3. #建立一个简单hash算法函数
  4. def hash(obj): 
  5.     m=hashlib.md5() 
  6.     m.update(obj) 
  7.     key=m.hexdigest() 
  8.     return key 
  9. #返回字典式的元组cursorclass = MySQLdb.cursors.DictCursor)
  10. conn = MySQLdb.connect (host = "192.168.1.254",user = "root",passwd = "000000",db = "test",cursorclass = MySQLdb.cursors.DictCursor)                            
  11. mc = memcache.Client(['192.168.1.254:11211'],debug=0
  12. #cursor = conn.cursor () 
  13. two=conn.cursor () 
  14. two.execute ("select * from slevin"
  15. row=two.fetchall() 
  16. #mc.flush_all() 
  17. if not mc.get(hash("slevin2")): 
  18.     for i in row: 
  19. #用HASH(表名+id值)做为KEY,把一行的记录存储到一个key里面
  20.         tabname='slevin' 
  21.         tabname=tabname+str(i.values()[0]) 
  22.         mc.add(hash(tabname),i) 
  23.         #print mc.get(hash(tabname)) 
  24. else
  25. value=mc.get(hash("slevin2")) 
  26.     for key in value.keys(): 
  27.         print "%s is %s" %(key,value[key]) 
  28. mc.disconnect_all() 
  29. cursor.close () 
  30. conn.close ()