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

Posted

技术标签:

【中文标题】如何从 python 使用 mongolab 插件到 Heroku?【英文标题】:How can I use the mongolab add-on to Heroku from python? 【发布时间】:2012-02-10 04:27:01 【问题描述】:

文档只讨论了如何从 ruby​​ 中做到这一点。

【问题讨论】:

【参考方案1】:

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

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

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

-会

【讨论】:

没有具体解决 Heroku,这是 OP 的问题。【参考方案2】:

我正在使用以下内容:

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)

【讨论】:

【参考方案3】:

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

在这个表单中会有一个带有键 MONGOLAB_URI 的条目:

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

通过从 uri 字符串创建连接,在 python 中简化来自 uri 的信息。

【讨论】:

【参考方案4】:

我认为这样的事情应该可行:

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')

【讨论】:

【参考方案5】:

PyMongo 现在提供了一个get_default_database() 方法,使整个练习变得简单:

from pymongo import MongoClient

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

【讨论】:

以上是关于如何从 python 使用 mongolab 插件到 Heroku?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 mongoLab 和 Heroku 服务器中使用 mongo URI

使用 Node.JS 从 mongodb 到 MongoLab

Heroku + MongoLab 插件与 Node.js 应用程序的连接错误 - 错误:连接 ECONNREFUSED 127.0.0.1:27017

将 Heroku 插件与 node.js 一起使用

如何使用 MongoLab 在 Heroku 上设置 MongoDB 数据库?

如何使用 MongoLab 在 Heroku 上设置 MongoDB 数据库?