0

私は特定のデータベースにアクセスする手段として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)
4

1 に答える 1

6

あなたが欲しいgetattr、ではなくsetattr

db = getattr(connection,dbname)

ここで、は名前がわかっている場合に属性を設定setattrする方法であり、名前がわかっている場合に属性を取得する方法です。getattr

つまり、以下は100%同等です。

db = connection.DBNAME
db = getattr(connection,'DBNAME')
于 2013-03-07T18:45:03.360 に答える