2013年1月27日 星期日

在python中把string當成object.name

因為最近有需要用到,碰巧看到人家python有出現這樣的代碼 getattr(... , ...)
http://blog.csdn.net/wzm112/article/details/6444668


  1. def query():  
  2.     conn = Connection('127.0.0.1',27017)  
  3.     db    = getattr(conn,'dbname')  
  4.     coll   = getattr(db,'collname')  
  5.      
  6.     #使用正则查询  
  7.     import re  
  8.     q      = rs.compile(r'add'#完成正则 r'.*'  ,r'[a-z]+'  
  9.     rst    = coll.find({'field' : { '$regex' : q } })  
  10.     print rst.count()  #打印查询结果  
  11.     #查询方式2  
  12.     rst    = coll.find({'field' : { '$regex' : r '[a-z]+'} })  
  13.     print rst.count()  





去詳查 getattr這個函數
http://www.cnblogs.com/pylemon/archive/2011/06/09/2076862.html

getattr(object, name[, default]) -> value


import statsout 
def output(data, format="text"):                           
    output_function = getattr(statsout, "output_%s" %format
    return output_function(data)


應該可以把原本一堆的if else 代換掉



import pymongo

con = pymongo.Connection(XXXXX)
db = con.AccountTable
accounts =db.account

#accounts = accounts.find_one()
accounts = accounts.find_one(XXXXXXX)
print accounts



可以替換為




import pymongo

con = pymongo.Connection(XXXXXX)
db = getattr(con,'AccountTable')
accounts = getattr(db,'account')

#accounts = accounts.find_one()
accounts = accounts.find_one(XXXXXXX)
print accounts


也就是可以動態的在python去呼叫mongo 的 table 

沒有留言:

張貼留言