首页 > 解决方案 > 无法在mongodb中存储数据

问题描述

views.py 中的函数:

def addevent(request):
    client = MongoClient('localhost', 27017)
    db_handle = client['event']
    col = db_handle['library_event']
    
    if request.method == 'POST':
        form = Addeventform(data=request.POST)
        
        if form.is_valid():
                add_event=models.Event(name=form.cleaned_data['name'], venue=form.cleaned_data['venue'], time=form.cleaned_data['time'], organiser = form.cleaned_data['organiser'])
                
                collection.insert_one(dictionary)
                
                col.update_one({'name':add_event.name},{'venue': add_event.venue },{'time': add_event.time},{'organiser':add_event.organiser})
                add_event.save(using='mongo')
                
                return render(request,'templates/index.html')

设置.py:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'book',
        'USER': 'root',
        'PASSWORD': 'jaswanth',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    },
    'mongo': {
        'ENGINE': 'djongo',
        'NAME': 'event',
    }
    
       
      
    
}

运行 python manage.py runserver 后,我得到:

Watching for file changes with StatReloader
Performing system checks...

System check identified some issues:

WARNINGS:
library.Admins.id: (fields.W342) Setting unique=True on a ForeignKey has the same effect as using a OneToOneField.
        HINT: ForeignKey(unique=True) is usually better served by a OneToOneField.

System check identified 1 issue (0 silenced).

You have 2 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): library.
Run 'python manage.py migrate' to apply them.
February 07, 2021 - 00:41:38
Django version 3.0.5, using settings 'lms.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

运行 python manage.py migrate 后,我得到了这个错误

“django.db.utils.OperationalError: (1050, “表‘library_event’已经存在”)”。

我在 mysql 中创建了“library_event”表。虽然我没有在 mysql 中使用该表保存事件模型,但数据正在存储在 mysql 中的该表中,而不是 mongodb 收集器中。

我输入的数据没有存储在本地主机上的 Mongodb 数据库中。请帮我解决这个问题。

标签: pythondjangodatabasemongodb

解决方案


尝试这个:

DATABASES = {
        'default': {
            'ENGINE': 'djongo',
            'NAME': 'event',
        }         
    }

推荐阅读