嗨我有一个问题我怎么解决呢,问题是我有一个python代码连接到我的localhost上的mongodb数据库
from pymongo import MongoClient
ip='localhost'
class Authentication():
def __init__(self):
try:
client = MongoClient(host=host,port=port)
db = client['Testdatabase']
self.coll = db['testcollection']
print 'database created successfully'
except Exception('database not created') as e:
print e
def insert_data(self,data):
if data:
self.coll.save(data)
def fetch_data(self):
results = self.coll.find({})
if results:
for result in results:
print result
if __name__=='__main__':
data = {'id':483,'name':'anil.c','age':32}
auth = Authentication()
auth.insert_data(data)
auth.fetch_data()
这很好...... 然后我在mongodb admin上创建了一个用户名&密码和enbeld authrization,之后我的数据库连接没有wroking为什么? 我确实将我的MongoClient更改为:
client = MongoClient('mongodb://username:password@127.0.0.1')
我需要它像:
client = MongoClient(host=host,port=port)
使用身份验证。 如果有人知道这个请给我建议。
答案 0 :(得分:1)
这是非常简单的,你的管理员中的crate用户是这样的:
>use admin
>db.createUser({user: "Admin",pwd: "localhost",roles: [ { role: "root", db: "admin" } ] })
在您的代码中进行修改后,您将成功添加用户:
from pymongo import MongoClient
class Authentication():
def __init__(self):
try:
password = urllib.quote_plus(MONGO['password'])
user = 'admin'
client = MongoClient('mongodb://'+user+':'+password+'@'+MONGO['host'])
db = client['Testdatabase']
self.coll = db['testcollection']
print 'database created successfully'
except Exception('database not created') as e:
print e
转到mongo配置文件cd /etc/mongod.conf,编辑它,如果您使用的是版本< 2.6 make'auth = true'或者如果mongo版本> 3.0 authrization:启用 保存并重启你的monogd服务器,如:
$sudo service mongod start
它可以正常使用身份验证