首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

PyMongo 3.x 連接 MongoDB 報 AttributeError: 'module' object has no attribute 'Connection' 解決

     編輯:程式設計綜合問答

版本變更根因

PyMongo 3.0+ 版本移除了 `Connection` 類,統一使用 `MongoClient`。舊代碼遷移必須更新 API。

錯誤代碼對比

# PyMongo 2.x 舊寫法 (已廢棄)
from pymongo import Connection
conn = Connection('localhost', 27017)

# PyMongo 3.x+ 新寫法
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
# 或簡寫
client = MongoClient()  # 默認 localhost:27017

完整遷移指南

1. 連接建立

# 支持連接字符串 URI 格式
client = MongoClient("mongodb://user:pass@host:port/db?authSource=admin")

# 連接池配置
client = MongoClient(
    maxPoolSize=50,
    minPoolSize=10,
    connectTimeoutMS=3000,
    serverSelectionTimeoutMS=5000
)

2. 數據庫/集合操作

db = client['mydb']          # 或 client.mydb
collection = db['users']     # 或 db.users

# 插入文檔
collection.insert_one({"name": "張三", "age": 25})
collection.insert_many([{"_id": i, "val": i*2} for i in range(100)])

# 查詢
cursor = collection.find({"age": {"$gte": 18}})
for doc in cursor:
    print(doc)

3. 與 MongoEngine 協同使用

from mongoengine import connect, Document, StringField, IntField

connect('mydb', host='localhost', port=27017)

class User(Document):
    name = StringField(required=True)
    age = IntField(min_value=0)

# 現在可以用 MongoEngine ORM 操作
user = User(name="李四", age=30).save()

常見坑點提示

  • 確保 MongoDB 服務已啟動:systemctl start mongod
  • 檢查防火牆/安全組開放 27017 端口
  • 虛擬環境中重新安裝:pip install --upgrade pymongo
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved