mongo.py 948 B

12345678910111213141516171819202122232425262728293031323334353637
  1. # -*- coding: utf-8 -*-
  2. """MongoDB 客户端工厂。
  3. 替代原 entityLink/mongotest.py 中硬编码的连接字符串。
  4. URI 走环境变量 BIDDINGKG_MONGO_URI,不写入代码。
  5. """
  6. from __future__ import absolute_import
  7. import logging
  8. from . import config
  9. __all__ = ["get_mongo_client", "get_mongo_db"]
  10. logger = logging.getLogger(__name__)
  11. def get_mongo_client():
  12. """返回 pymongo MongoClient。未配置 URI 时抛出明确错误。"""
  13. try:
  14. import pymongo
  15. except ImportError: # pragma: no cover
  16. raise ImportError("pymongo is required: pip install pymongo")
  17. uri = config.mongo_uri()
  18. if not uri:
  19. raise RuntimeError(
  20. "MongoDB URI not configured. Set BIDDINGKG_MONGO_URI env var or "
  21. "config/.env."
  22. )
  23. return pymongo.MongoClient(uri)
  24. def get_mongo_db(dbname="bxkc"):
  25. """返回指定 db。"""
  26. client = get_mongo_client()
  27. return client[dbname]