我正在尝试通过 python 套接字连接到 mongodb 实例。网址如下所示
用户名:密码@host.com:端口
如何使用 python 套接字连接到此?
下面的代码给了我这个错误:[Errno -5]没有与主机名关联的地址
import socket
import tornado
full_url = '%s:%s@%s' % (username, password, host)
s = socket.socket()
s.connect((full_url, port))
stream = iostream.IOStream(s)
编辑 - 我问的原因是 asyncmongo 目前不支持这种类型的 url。我想看看是否可以写一个补丁。 asyncmongo 库使用类似于上面代码中的套接字进行连接。
最佳答案
您应该使用驱动程序连接到 mongodb。如果您正在使用 Tornado(看起来您打算这样做),请尝试 asyncmongo ;如果您使用的是线程 Web 服务器/应用程序框架(Django、Pylons 等),您可以使用 PyMongo直接。
<小时/>编辑:至于为什么此代码不起作用,socket
模块不接受连接 URL,只接受主机名和端口。它是一个低级库。要连接到(网络)网址,请考虑使用 urllib2或httplib .
编辑 2: MongoDB 中的身份验证不是在传输级别处理的,而是在应用程序级别处理的。我建议您先阅读Implementing Authentication in a Driver ,然后看看 PyMongo 如何实现身份验证(在 connection.py 和 database.py 中)。您还需要移植或重新实现 asyncmongo 的 MongoDB 连接 URI 解析,记录为 here .
关于python - 在python中通过身份验证连接到套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6540515/