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

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

【问题讨论】:

    标签: python mongodb heroku mlab


    【解决方案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()
          

          【讨论】:

            猜你喜欢
            • 2012-08-14
            • 2015-02-11
            • 2015-02-07
            • 2015-05-07
            • 2013-01-03
            • 2012-12-07
            • 2013-08-07
            • 2013-10-20
            • 1970-01-01
            相关资源
            最近更新 更多