簡體   English   中英

應用程序保存的 Pymongo 數據在 mongo shell 中不可用

[英]Pymongo data saved by app is not available in mongo shell

我正在使用 pymongo 構建一個 flask 應用程序。 在我的 python 腳本中,數據按應有的方式使用 .save() 保存,並且可以按應有的方式使用 .find() 進行檢索,並且如果我重新啟動應用程序,它也會持續存在。 但是,如果我從另一個終端或在停止應用程序后從同一終端檢查 mongo 數據庫,則數據不存在。 為了確保我正確使用 pymongo,我從 w3schools.com 復制並粘貼了以下基本腳本:

#!/usr/bin/python3
import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]
mydict = { "name": "John", "address": "Highway 37" }
obj = mycol.insert_one(mydict)
obj = mycol.find_one()
print(obj)

output 是:

{'_id': ObjectId('5f09b0c4dfedb570e2f5411e'), 'name': 'John', 'address': 'Highway 37'}

正如你所期望的那樣。 這是在運行上述腳本之前顯示數據庫的結果:

> show databases
admin   0.000GB
config  0.000GB
local   0.000GB

這是運行腳本后運行 show databases 的結果:

> show databases
admin   0.000GB
config  0.000GB
local   0.000GB
mydatabase  0.000GB

但是

use mydatabase
db.mydatabase.customers.find()
>

collections 沒有保留在我嘗試連接的 mongo 服務器中,或者由於某種原因它們沒有顯示在 shell 中。 這是我的 /etc/mongod.config 文件:(已刪除注釋行,因此 stackoverflow 不會將其格式化為標記)

storage:
  dbPath: /var/lib/mongodb
  journal:
   enabled: true


systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

net:
  port: 27017
  bindIp: 127.0.0.1

processManagement:
  timeZoneInfo: /usr/share/zoneinfo

而且我不確定這些是否相關,但是當我輸入 mongo shell 時總是出現啟動警告:

MongoDB shell version v4.2.8
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("20a57a18-201c-4393-a9a3-c0ee53e028e8") }
MongoDB server version: 4.2.8
Server has startup warnings: 
2020-07-11T12:16:02.034+0000 I  STORAGE  [initandlisten] 
2020-07-11T12:16:02.034+0000 I  STORAGE  [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2020-07-11T12:16:02.034+0000 I  STORAGE  [initandlisten] **          See http://dochub.mongodb.org/core/prodnotes-filesystem
2020-07-11T12:16:02.940+0000 I  CONTROL  [initandlisten] 
2020-07-11T12:16:02.940+0000 I  CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2020-07-11T12:16:02.940+0000 I  CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2020-07-11T12:16:02.940+0000 I  CONTROL  [initandlisten]

在看到“連接到:mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb”后,我試圖將 MongoClient 連接更改為“mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb”看看這是否可行,但它只是拋出和錯誤:

    /home/vagrant/.local/lib/python3.6/site-packages/pymongo/compression_support.py:55: UserWarning: Unsupported compressor: disabled
  warnings.warn("Unsupported compressor: %s" % (compressor,))
/home/vagrant/.local/lib/python3.6/site-packages/pymongo/common.py:756: UserWarning: Unknown option gssapiservicename
  warnings.warn(str(exc))

你想要的語法是:

db.customers.find()

在 shell。 您已經use命令指定了數據庫。

要列出 collections,它是:

show collections

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM