簡體   English   中英

在沒有eval()的pymongo中設置mongo數據庫。 也許setattr()?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM