如何从python中使用mongolab插件到Heroku?

时间:2012-01-14 01:57:19

标签: python mongodb heroku mlab

该文档仅讨论如何从ruby中执行此操作。

5 个答案:

答案 0 :(得分:10)

这是来自MongoLab的遗嘱。我们有一个如何使用官方python驱动程序(pymongo)在Python中连接的通用示例。这个例子不是用于连接Heroku,但它应该是类似的。不同之处在于您需要从Heroku ENV环境中提取驱动程序配置以提供给驱动程序。

https://github.com/mongolab/mongodb-driver-examples/blob/master/python/pymongo_simple_example.py

如果您仍有问题,请随时直接通过support@mongolab.com与我们联系

- 将会

答案 1 :(得分:6)

我正在使用以下内容:

import os
from urlparse import urlsplit
from pymongo import Connection

url = os.getenv('MONGOLAB_URI', 'mongodb://localhost:27017/testdb')
parsed = urlsplit(url)
db_name = parsed.path[1:]

# Get your DB
db = Connection(url)[db_name]

# Authenticate
if '@' in url:
    user, password = parsed.netloc.split('@')[0].split(':')
    db.authenticate(user, password)

答案 2 :(得分:4)

在安装了heroku应用程序的附件后,通过在命令行上运行heroku config来获取连接字符串设置。

此表格中将有一个带有密钥MONGOLAB_URI的条目:

MONGOLAB_URI => mongodb://user:pass@xxx.mongolab.com:27707/db

通过从uri字符串创建连接,简单地从python中的uri获取信息。

答案 3 :(得分:1)

我认为这样的事情应该有效:

import os
import sys
import pymongo


mongo_url = os.getenv('MONGOLAB_URI', 'mongodb://localhost:27017')
db_name = 'mongotest'

if __name__ == '__main__':
  try:
   connection = pymongo.Connection(mongo_url)
   if 'localhost' in self.mongo_url:
     db_name = 'my_local_db_name'
   else:
     db_name = self.mongo_url.rsplit('/',1)[1]
   database = connection[db_name]
  except:
   print('Error: Unable to Connect')
   connection = None

if connection is not None:
  database.test.insert({'name': 'foo'})

答案 4 :(得分:0)

PyMongo现在提供了一种get_default_database()方法,使整个练习变得微不足道:

from pymongo import MongoClient

client = MongoClient(os.environ['MONGOLAB_URI'])
db = client.get_default_database()