django對接mongodb實現資料庫查詢操作

2021-10-23 10:33:23 字數 4182 閱讀 2395

最近再給客戶做乙個資料展示的後台操作介面,給的資料是mongo的,要知道django對mongo不是很友好,網上有說views層操作mongo資料庫和操作mysql大體差不多,但是例如mysql的查詢語句是下面這樣查詢所有的:

all = models.send.objects.all().values('party_id','party_name','party_img')
很遺憾,mongo可是做不到,他沒有all(),沒有value(),所以用操作mysql的方法來操作mongo是不切實際的。

補充一句,django對接mongo是不需要執行遷移的,但是model層建表還是要有的,當連線好資料庫執行程式後(通過瀏覽器執行配置好的url),會根據models建的模生成資料庫;但是如果想拿到客戶給的mongo資料,model層的表名(即類名)要和拿到的collection(類似於mysql的表)的名稱一致,而models層的欄位名要和collection內部的key值一致(因為mongo不同於mysql,其collection資料形式是key:value的形式)

整體流程如下:

主要目錄展示:

展示models的建模

from mongoengine import

*#mongo的模板是要繼承mongoengine下document的,而不是mysql裡面的models

class

article

(document)

:# 定義資料庫中的所有字段,及拿到的客戶表key值

two_level_site = stringfield(max_length=32)

three_level_site = stringfield(max_length=32)

four_level_site = stringfield(max_length=32)

subject = stringfield(max_length=32)

department = stringfield(max_length=32)

article_title = stringfield(

) article_link = stringfield(

) article_type = stringfield(

) article_post_date = datetimefield(

) insert_time = datetimefield(

) article_stream = stringfield(

) article_content = stringfield(

)# 指明連線的資料表名

meta =

views層

# 取值

defneiron**iew

(request)

:if request.method ==

'get'

:#article是表名,這一步是拿到article的queryset

find_neirong = article.objects

#既然沒有mysql的查詢方法,那麼就自建乙個列表,用於儲存取到的資料

context =

# 將列表設定為全域性變數

global context

# queryset是需要遍歷才能取到值的

for f in find_neirong:

#拿到資料庫的id,注意models裡面並沒有設定id欄位,這樣拿到的是mongo自動生成的objectid

id= f.

id#通過「物件+.」的方法拿到資料庫指定key值下面的內容

#注意其中two_title是可以任意命名的,而two_level_site必須要和資料庫的key一致

two_title = f.two_level_site

three_title = f.three_level_site

four_title = f.four_level_site

lanmu = f.subject

bushi = f.department

title = f.article_title

t_url = f.article_link

t_sjlx = f.article_type

date1 = f.article_post_date

date2 = f.insert_time

a_stream = f.article_stream

# 遍歷取完的值要放到乙個暫時的字典中,改字典的目的是將取到的值封裝成key、value的形式

#只有這樣才能在介面上根據key取到其對應資料庫的value值,單引號內部明明可以隨意,但是後面的value是必須要和上面寫的字段一致,為了更容易理解,建議我這樣寫

context1 =

#最終context的形式為[...{}]

# 最終就可以通過render渲染context到html介面取值了

return render(request,

'content.html'

,)

配置url

#主url

from django.urls import path,include

urlpatterns =

[ path(

'neirong/'

,include())

,]

from django.contrib import admin

from django.urls import path,include

urlpatterns =

[ path(

'',views.neiron**iew),]

介面取值

>

>

}td>

>

}td>

>

})td

>

>

}td>

>

}td>

>

}td>

>

}td>

scope

="row"

>}td

>

>

}td>

>

}td>

>

}td>

>

}td>

>

role

="presentation"

class

="dropdown"

>

class

="btn btn-default dropdown-toggle"

data-toggle

="dropdown"

href

="#"

role

="button"

aria-haspopup

="true"

aria-expanded

="false"

>

操作class

="caret"

>

span

>

button

>

class

="dropdown-menu"

>

>

href

="#"

>

編輯a>

li>

>

href

="#"

>

刪除a>

li>

>

href

="#"

>

全域性置頂a

>

li>

ul>

div>

td>

tr>

執行檢視結果:

如果對您有幫助,賞口飯吃❤謝謝老闆❤

mysql對接 對接mysql

新建 對接mysql 安裝pymysql 參考 安裝pymysql 在檔案 bianbingdang init py 內寫入如下 import pymysql pymysql.install as mysqldb 修改配置 開啟配置檔案 bianbingdang settings.py 找到如下 d...

搭建django框架並連線mongodb資料庫

1 使用pycharm的專業版 新建乙個django專案 2 安裝包 pip install mongoengine1 在settings.py中進行配置 如果原先沒連線mysql資料庫,就把預設的設定為空,如果有可以保留,也不會不影響 原先沒有連線其他資料庫 databases from mong...

天貓精靈對接1 outh對接

公司的智慧型家居產品需要接入語音控制,目前在對接阿里語音的天貓精靈 對接天貓精靈的第一步是完成outh鑑權 鑑權的部落格可以參照如下部落格 免登入式的 帶有登入的 貼個 說說自己的實現 天貓精靈的文件還是很詳細的,第一步是登入認證,認證ok之後重定向天貓精靈的位址 帶上code的 登入過程還是必要的...