简体   繁体   English

pymongo 不创建新数据库(mongo 在 docker 上运行)

[英]pymongo does not create new database (mongo is running on a docker)

I use docker-compose to start mongo on my local computer with a username and password.我使用 docker-compose 使用用户名和密码在本地计算机上启动 mongo。 It looks running OK.它看起来运行正常。

Then I run a python script, import pymongo to create a database.然后我运行一个 python 脚本,导入 pymongo 创建数据库。 There's no error sending out.发送没有错误。 However, the new database is not created at all.但是,根本没有创建新数据库。

My docker-compose.yml script is as below我的docker-compose.yml脚本如下

version: '3'

services:
  mongodb:
    image: mongo
    ports:
      - 27017:27017
    environment:
      - MONGO_INITDB_ROOT_USERNAME=mongodb
      - MONGO_INITDB_ROOT_PASSWORD=mongodb
    volumes:
      - ./mongodb-data:/data/db
  mongo-express:
    image: mongo-express:0.54
    ports:
      - 8080:8081
    environment:
      - ME_CONFIG_MONGODB_ADMINUSERNAME=mongodb
      - ME_CONFIG_MONGODB_ADMINPASSWORD=mongodb
      - ME_CONFIG_MONGODB_SERVER=mongodb
    depends_on:
      - mongodb
    volumes:
      - ./mongodb-data:/data/db
volumes:
  db-data:

Part of my python script is as below我的python脚本的一部分如下

from flask import Flask, render_template, request
from pymongo import MongoClient

app = Flask(__name__)
dbclient = MongoClient(
    "mongodb://localhost:27017/",
    username = 'mongodb',
    password = 'mongodb'
)
appdb = dbclient['blog']
print(dbclient.list_database_names())

The shell output is only the system mongo's databases shell output 只是系统mongo的数据库

['admin', 'config', 'local']

Can any one point out what I need to do to fix?谁能指出我需要做些什么来解决? Thanks a lot.非常感谢。

Try this instead, Add collection & some test data, Should work.试试这个,添加集合和一些测试数据,应该可以。 Mongo doesn't create database without collection & data. Mongo 不会在没有收集和数据的情况下创建数据库。

appdb = dbclient["blog"]
appcoll = appdb["blogcollection"]
document = {"user_id": 1, "user": "test"}
appcoll.insert_one(document)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM