[英]Set a mongo database in pymongo without eval(). Maybe setattr()?
我已經習慣在pymongo中執行此操作,以作為訪問特定數據庫的一種方式:
import pymongo
connection = pymongo.MongoClient()
db = connection.DBNAME
然后查詢db.collectioname.find(),等等。但是,我現在希望能夠連接到通過變量命名的數據庫,並着眼於遍歷一系列數據庫。 所以像這樣:
dbname = 'DBNAME'
connection = pymongo.MongoClient()
db = eval('connection.' + dbname)
我被告知eval()有時是魔鬼,應該避免。 我該如何使用setattr()或其他解決方案呢? 就像是...
dbname = 'DBNAME'
connection = pymongo.MongoClient()
db = setattr(connection, '??name??', dbname)
您需要getattr
,而不是setattr
。
db = getattr(connection,dbname)
如果您知道屬性的名稱,那么setattr
是設置屬性的方法,如果您知道屬性的名稱,則getattr
是獲取屬性的方法。
換句話說,以下內容是100%等效的:
db = connection.DBNAME
db = getattr(connection,'DBNAME')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.