Mit*_*ops 0 python eval mongodb setattr pymongo
我习惯于在pymongo中这样做,作为访问特定数据库的一种方法:
import pymongo
connection = pymongo.MongoClient()
db = connection.DBNAME
Run Code Online (Sandbox Code Playgroud)
然后,我现在想要能够连接到通过变量命名的数据库,并着眼于循环一系列数据库.所以类似于:
dbname = 'DBNAME'
connection = pymongo.MongoClient()
db = eval('connection.' + dbname)
Run Code Online (Sandbox Code Playgroud)
我被告知eval()偶尔会成为魔鬼,应该避免.如何使用setattr()或其他解决方案执行此操作?就像是...
dbname = 'DBNAME'
connection = pymongo.MongoClient()
db = setattr(connection, '??name??', dbname)
Run Code Online (Sandbox Code Playgroud)
你想要的getattr不是setattr.
db = getattr(connection,dbname)
Run Code Online (Sandbox Code Playgroud)
如果您知道它的名称,那么设置属性setattr的方法在哪里,如果您知道它的名称,则可以获取属性.getattr
换句话说,以下是100%等效:
db = connection.DBNAME
db = getattr(connection,'DBNAME')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
661 次 |
| 最近记录: |