【问题标题】:Connect to a Mongo database in python在 python 中连接到 Mongo 数据库
【发布时间】:2018-02-24 22:49:37
【问题描述】:

我必须做一个爬虫(我选择 python)来填充在 Symfony 项目中创建的数据库(使用学说)。 爬虫完成了,但是当我尝试填充数据库时它不起作用...

所以我在我的数据库 (mtdbdd) 中创建了一个新表测试,其中只有一个自动增量 ID 和一个标题。我尝试填写此代码:

from pymongo import MongoClient

MONGO_URI = 'mongodb://root:root@127.0.0.1:8889'

client = MongoClient(connect=False)
client = MongoClient(MONGO_URI)
db = client.mtdbdd
coll = db.test

try:
    result = coll.insert_one({"title": "test"})
except coll.errors.OperationFailure as e:
    print e.code
    print e.details

但我有错误:

pymongo.errors.ServerSelectionTimeoutError: Got opcode 3945 but expected 1

有人可以帮助我吗?谢谢大家!

【问题讨论】:

  • 如何启动mongodb? Mongodb默认端口通常是27017,所以不知道你为什么使用8889
  • 将MongoClient的这两行改为MongoClient(MONGO_URI, connect=False)
  • @MrE 我使用这个端口是因为我的数据库在这个端口上,我不应该吗? (我在 Mac 上使用 Mamp)
  • @eLRuLL 我试过了,但没用...:/
  • 你应该交叉检查你的用户名和密码是root。从错误来看,客户端无法连接到mongo服务器

标签: python scrapy pymongo


【解决方案1】:

连接字符串应采用以下形式:

mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]

https://docs.mongodb.com/manual/reference/connection-string/

所以在你的情况下:

mongodb://root:root@127.0.0.1:8889/<dbname>

摆脱

client = MongoClient(connect=False)

因为无论如何你都会在下一行覆盖客户端。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-27
    • 1970-01-01
    • 2016-12-14
    • 2018-10-22
    • 1970-01-01
    • 1970-01-01
    • 2015-09-18
    相关资源
    最近更新 更多