0

mongoLabs用来托管我的数据库,我想从我的应用程序连接到它。

我也在使用中的Motor模块pyMongo。我不确定在哪里实例化连接。

例如,我知道如果数据库与应用程序位于同一本地计算机上,我会这样做:

 database = motor.MotorClient().open_sync().myDatabase

mongoLab 网站说要uri在驱动程序中包含以下内容:

mongodb://<dbuser>:<dbpassword>@ds047057.mongolab.com:47057/myDatabase

但我看不到如何创建与该数据库的连接。

谢谢

4

3 回答 3

3

看起来 MotorClient 采用与 MongoClient 相同的参数:

https://github.com/ajdavis/mongo-python-driver/blob/motor/motor/init .py# L782

http://api.mongodb.org/python/current/api/pymongo/mongo_client.html

鉴于此,您应该能够像这样使用 URI:

database = motor.MotorClient("mongodb://<dbuser>:<dbpassword>@ds047057.mongolab.com:47057/myDatabase").open_sync().myDatabase
于 2012-12-28T17:31:12.637 回答
2

您应该按照这些手册为 MotorClient 指定连接设置: MotorClient 采用与 MongoClient 相同的构造函数参数,以及http://emptysquare.net/motor/pymongo/api/motor/motor_client.html#motor.MotorClienthttp ://emptysquare.net/motor/pymongo/api/pymongo/mongo_client.html#pymongo.mongo_client.MongoClient

“主机参数可以是一个完整的 mongodb URI,除了一个简单的主机名。它也可以是主机名或 URI 列表。主机字符串中指定的任何端口都将覆盖端口参数。如果多个 mongodb URI 包含传递数据库或身份验证信息,将使用最后一个数据库、用户名和密码。对于用户名和密码,保留字符,如 ':'、'/'、'+' 和 '@' 必须按照 RFC 2396 进行转义。

db =  database = motor.MotorClient('mongodb://<dbuser>:<dbpassword>@ds047057.mongolab.com:47057/myDatabase
').open_sync().myDatabase
于 2012-12-28T17:39:48.303 回答
0

以前的答案有点过时了,所以根据文档和对我有用的正确方法:

import motor.motor_asyncio
import asyncio
from asyncio import coroutine
db = motor.motor_asyncio.AsyncIOMotorClient().database_name

https://motor.readthedocs.io/en/stable/tutorial-asyncio.html https://github.com/mongodb/motor/blob/master/doc/tutorial-asyncio.rst

于 2019-11-23T06:46:11.520 回答