2016-10-20 7 views
0
from pymongo import MongoClient 
Client = MongoClient('localhost', 27017) 
dbs = Client.database_names() 
for val in range(len(dbs)): 
    print "%s : %s"%(val,dbs[val]) 
database = input(" Select the Database ") 
ex = dbs[database] 

print ex 
cols = Client.ex.collection_names() 
print cols 
for c in cols: 
    print c 

ここに私のコードです。もし私がClient.m101.collection_names()を使用すると、私はデータベースの下にすべてのコレクションを得ることができます。 注:m101は私のデータベースです。しかし、私はユーザーからデータベースを取得し、ユーザーが入力したデータベースの下でコレクションを読みたいと思っています。pythonを使ってmongodbのデータベースのもとですべてのコレクションを動的に取得する方法は?

答えて

0

次のように、Pythonの固有の命名制限を削除MongoClient接続インスタンス、上の辞書形式のアクセスを使用してデータベースにアクセスすることができます

from pymongo import MongoClient 

def get_collection_names(dbname): 
    client = MongoClient('localhost', 27017) 
    db = client[dbname] 
    return db.collection_names() 

def main(): 
    database = input(" Select the Database ") 
    cols = get_collection_names(database) 
    for c in cols: 
     print c 

if __name__ == '__main__': 
    main() 
関連する問題