Sta*_*eez 3 python database-connection mongodb x509 mongoengine
我正在使用复制和分片构建 mongodb-cluster。我设置了基于 x509 的身份验证。我通过 mongo 连接到数据库(mongos):
mongo admin --ssl --sslCAFile mongoCA.pem \
--sslPEMKeyFile client.pem -u user -p password --host my.host.com --port 27017
Run Code Online (Sandbox Code Playgroud)
如何使用 mongoengine 连接到集群?
我没有找到方法register_connection的连接选项的描述:
def register_connection (alias, name = None, host = None, port = None,
read_preference = READ_PREFERENCE,
username = None, password = None, authentication_source = None,
** Kwargs):
Run Code Online (Sandbox Code Playgroud)
例如 PyMongo 提供了必要的选项http://api.mongodb.com/python/current/examples/authentication.html#mongodb-x509但我需要在现有代码中使用 mongoengine 。
我查看了 dokstring "register_connection",发现:
:param kwargs: allow ad-hoc parameters to be passed into the pymongo driver
Run Code Online (Sandbox Code Playgroud)
我将其用作:
import os
import ssl
from mongoengine import DEFAULT_CONNECTION_NAME, register_connection
from pymongo import ReadPreference
db_host = os.getenv('DB_HOST', 'localhost')
db_port = int(os.getenv('DB_PORT', '27017'))
db_name = os.getenv('DB_DATABASE', 'mydatabase')
ssl_certfile = os.getenv('SSL_SERTFILE', 'client.pem')
ssl_cert_reqs = ssl.CERT_REQUIRED
ssl_ca_certs = os.getenv('SSL_CA_CERTS', 'mongoCA.pem')
db_user = os.getenv('DB_USER', 'myUser')
db_pass = os.getenv('DB_PASS', '')
ssl_config = {
'ssl': True,
'ssl_certfile': ssl_certfile,
'ssl_cert_reqs': ssl_cert_reqs,
'ssl_ca_certs': ssl_ca_certs
}
register_connection(alias=DEFAULT_CONNECTION_NAME,
name=db_name,
host=db_host,
port=db_port,
username=db_user,
password=db_pass,
read_preference=ReadPreference.NEAREST,
authentication_source=db_name,
**ssl_config)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3297 次 |
| 最近记录: |