下载安装mongodb(以下命令一次执行)
> curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz
> cd /mongodb
> tar -xf mongodb-linux-x86_64-3.0.6.tgz
> mkdir /usr/local/mongodb
> cd /usr/local/mongodb/
> cp -r /mongodb/mongodb-linux-x86_64-3.0.6/bin/ .
> mkdir etc
> mkdir log
> mkdir -p data/db
> vim etc/mongodb.conf**
++++mongodb.conf中 ++++
dbpath=/usr/local/mongodb/data/db/
logpath=/usr/local/mongodb/log/mongodb.log
logappend=true
fork=true
auth=true
bind_ip=0.0.0.0
> vim /etc/profile
++++profile 中添加++++
export PATH=/usr/local/mongodb/bin:$PATH
//设置关闭和开启mongodb的全局指令
> alias stopmdb='mongod--dbpath=/usr/local/mongodb/data/db/ --shutdown'
> alias startmdb='mongod -f /usr/local/mongodb/etc/mongodb.conf'
//mongodb默认不需要账号密码,为安全需要添加用户密码及认证
//开启mongdb后
> mongo
> use admin
> db.createUser({user:"root",pwd:"123456",roles:[{role:"userAdminAnyDatabase",db:"admin"},{role:"readWriteAnyDatabase",db:"admin"}]})
//开启验证
> cd /usr/local/mongodb/bin
> mongod --dbpath '/usr/local/mongodb/data/db' --auth
//重启mongodb
> stopmdb
> stratmdb
//查看是否开启验证
> mongo
> show dbs
2019-10-08T19:48:35.285+0800 E QUERY Error: listDatabases failed:{
“ok” : 0,
“errmsg” : “not authorized on admin to execute command { listDatabases: 1.0 }”,
“code” : 13
}
//验证登录
> use admin
> db.auth("root", "123456")
> show dbs
++结果++
admin 0.078GB
local 0.078GB
++++
python 连接mongodb
> pip install pymongo
myclient = pymongo.MongoClient("mongodb://mongodb服务地址:27017/")
# 验证登录
db = myclient.admin
db.authenticate("root", "123456")
# 查看所有库
dblist = myclient.list_database_names()
print (dblist)
+++++print 结果+++++++
['admin', 'mrtest', 'local']
+++++++
Django 连接mongodb
目前官方正版django对nosql支持并不好,mongoengine是其中一种连接方式,且并不支持admin/xadmin;
据说有django-nonrel的django分支可无痛使用 Django+xAdmin+MongoDB;但是其貌仅支持python2及django1.6及以下的版本,遂舍弃!!!
mongoengine连接mongodb如下
pip install mongoengine
项目setting文件中,DATABASES配置与mongodb连接无关,按业务需要使用或置空
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
from mongoengine import connect
#connect('admin', host='', port=27017,username='root', password='123456')
client = connect('mrtest', host='', port=27017)
d = client.admin #权限验证
d.authenticate("root", "123456")
或者
from mongoengine import connect
connect(
db="mrtest", # 要操作的数据库
alias='default', # 必须定义一个default数据库
host="",
port=27017,
username="root",
password="123456",
authentication_source="admin", # 进行身份认证的数据库
)
一个使用mongoengine的简例:
model.py
import mongoengine
class MrTest(mongoengine.Document):
hhh = mongoengine.StringField(max_length=30)
name = mongoengine.StringField(max_length=30,)
style = mongoengine.StringField(max_length=30,)
url.py
urlpatterns = [
path('admin/', admin.site.urls),
path('testmdb/', testmdb, name='testmdb'),
]
views.py
from django.http import JsonResponse
def testmdb(request):
from apptest.models import MrTest
tobj = MrTest.objects.filter()[0]
return JsonResponse({'test':'adsdasd','name':tobj.name,'style':json.dumps(tobj.style)})