文档数据库服务 DDS-连接DDS实例的常用方式:python mongo客户端

时间:2024-06-18 14:41:46

python mongo客户端

  • 前提条件
    1. 连接数据库的弹性云服务器必须和DDS实例之间网络互通,可以使用curl命令连接DDS实例服务端的IP和端口号,测试网络连通性。

      curl ip:port

      返回“It looks like you are trying to access MongoDB over HTTP on the native driver port.”,说明网络互通。

    2. 在弹性云服务器上安装Python以及第三方安装包pymongo。推荐使用pymongo2.8版本。
    3. 如果开启SSL,需要在界面上下载根证书,并上传到弹性云服务器。
  • 连接代码
    • SSL开启
      import ssl
      import os
      from pymongo import MongoClient
      # 认证用的用户名和密码直接写到代码中有很大的安全风险,建议在配置文件或者环境变量中存放(密码应密文存放、使用时解密),确保安全
      # 本示例以用户名和密码保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量(环境变量名称请根据自身情况进行设置)EXAMPLE_USERNAME_ENV和EXAMPLE_PASSWORD_ENV
      rwuser = os.getenv('EXAMPLE_USERNAME_ENV')
      password = os.getenv('EXAMPLE_PASSWORD_ENV')
      conn_urls="mongodb://%s:%s@ip:port/{mydb}?authSource=admin"
      connection = MongoClient(conn_urls % (rwuser, password),connectTimeoutMS=5000,ssl=True, ssl_cert_reqs=ssl.CERT_REQUIRED,ssl_match_hostname=False,ssl_ca_certs=${path to certificate authority file})
      dbs = connection.database_names()
      print "connect database success! database names is %s" % dbs
    • SSL关闭
      import ssl
      import os
      from pymongo import MongoClient
      # 认证用的用户名和密码直接写到代码中有很大的安全风险,建议在配置文件或者环境变量中存放(密码应密文存放、使用时解密),确保安全
      # 本示例以用户名和密码保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量(环境变量名称请根据自身情况进行设置)EXAMPLE_USERNAME_ENV和EXAMPLE_PASSWORD_ENV
      rwuser = os.getenv('EXAMPLE_USERNAME_ENV')
      password = os.getenv('EXAMPLE_PASSWORD_ENV')
      conn_urls="mongodb://%s:%s@ip:port/{mydb}?authSource=admin"
      connection = MongoClient(conn_urls % (rwuser, password),connectTimeoutMS=5000)
      dbs = connection.database_names()
      print "connect database success! database names is %s" % dbs
  • 注意事项
    1. {mydb}代表要连接数据库的名称。
    2. URL中的认证数据库必须为“admin”,即“authSource=admin”。
support.huaweicloud.com/bestpractice-dds/dds_0002.html