13

在命令行上,这有效:

$ mongo
> show dbs
mydatabase   1.0GB

但是,这不会:

$ python    
>>> import pymongo
>>> connection = pymongo.MongoClient()
>>> connection.mydatabase.find()

我在这里通读了文档:

http://api.mongodb.org/python/current/tutorial.html

但是也不明白怎么...

  1. 连接到现有数据库(使用 pymongo)
  2. 查询 mongodb 连接中存在哪些数据库。

为什么我无法访问我的数据库?

4

5 回答 5

15

连接到现有数据库

import pymongo
from pymongo import MongoClient
connection = MongoClient()
db = connection.mydatabase

列出现有数据库

import pymongo
from pymongo import MongoClient
connection = MongoClient()
# connection.database_names() # depreciated
connection.list_database_names()
于 2013-01-23T00:04:52.740 回答
3

这个问题暗示用户有一个本地 MongoDB。但是我发现这个问题试图连接到远程MongoDB。我认为该教程值得一提(这里没有其他答案提到我如何指定主机和端口)

上面的代码将连接到默认主机和端口。我们还可以显式指定主机和端口,如下所示:

client = MongoClient('localhost', 27017)

或者使用 MongoDB URI 格式:

client = MongoClient('mongodb://localhost:27017/')

于 2019-10-16T20:37:34.487 回答
2

show dbs并且find()是完全不同的命令,因此您无法将两者进行比较。

connection.mydatabase.find()

实际上什么都不做,因为您不能find()在数据库级别上记录。您可能正在寻找:

cursor = connection.mydatabase.mycol.find()

我不是 Python 程序员,但类似的东西和foreachvarcursor来获取你的数据。

作为补充说明,您将需要替换mycol为包含您的文档的集合名称。

至于查询数据库列表,您可以执行以下操作:

databases = connection.mydatabase.command({'listDatabases': 1});

如此处所示:http: //docs.mongodb.org/manual/reference/command/listDatabases/#listDatabases

然而,我又不是 Python 程序员,但这应该让你开始。

于 2013-01-22T22:16:11.193 回答
2

在 python 命令行上:

import pymongo
from pymongo import MongoClient
connection = MongoClient()  ## connects by default to db at localhost:27017
connection.database_names() ## python binding equivalent to show dbs.

尽管似乎没有大量示例,但Python 驱动程序 API 文档中的绑定似乎非常完整。

于 2013-01-22T23:59:18.283 回答
1

database_names() 已弃用。可以使用 list_database_names() 代替。

mongo_db_url 类似于“mongodb://localhost:27017/”。27017为默认端口号,适当替换。

from pymongo import MongoClient
client = MongoClient(<mongo_db_url>)
#or client = MongoClient('localhost', 27017)
client.list_database_names()
于 2020-10-09T06:13:35.060 回答