centos 下mongodb 安裝使用

下載安裝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)})
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章