2012-01-14 55 views

回答

10

這是來自MongoLab的Will。我們有一個通用的例子,說明如何使用官方的Python驅動程序(pymongo)在Python中進行連接。這個例子不是用來連接Heroku,而應該是相似的。不同之處在於您需要從Heroku ENV環境中提取驅動程序配置以提供給驅動程序。

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

如果您仍然有問題隨時與我們直接[email protected]安裝後

- 將會

+1

沒有具體解決Heroku,這是OP的問題。 – claymation 2013-03-18 21:18:07

4

獲取通過在命令行上運行heroku config連接字符串設置聯繫Heroku應用程序的附加組件。

會有這種形式與重點MONGOLAB_URI的條目:

MONGOLAB_URI => mongodb://user:[email protected]:27707/db

只需創建從URI字符串連接從蟒蛇的URI的信息。

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

PyMongo現在提供了一個get_default_database()方法,使這個整個演習瑣碎:

from pymongo import MongoClient 

client = MongoClient(os.environ['MONGOLAB_URI']) 
db = client.get_default_database() 
相關問題