0

I am using mongoengine,flask and i am try to insert the data into db my code

from flask import Flask,jsonify,request
from flask_mongoengine import MongoEngine
from mongoengine import  connect
app = Flask(__name__)
app.config['MONGODB_DB'] = 'programming'
db = MongoEngine(app)
connect('db')
@app.route('/add', methods = ['POST'])
def add_data():
    #language = {'name':'pyhton'}
    db.languages.insert( {'name': request.form.get('name','python')})
    return jsonify({'message':"Inserted Succesfuuly"})
if __name__ == '__main__':
    app.run(debug=True,port=8000)

Error:
File "/home/ravi/PycharmProjects/flaskapi/helloapi.py", line 21, in add_data db.languages.insert( {'name': request.form.get('name','Ravi')})
AttributeError: 'MongoEngine' object has no attribute 'languages'

Help would be appreciated..

Dhia
  • 10,119
  • 11
  • 58
  • 69
Ravi
  • 327
  • 1
  • 4
  • 14

1 Answers1

1

It means you cannot use collections on your db like this. The db = MongoEngine(app) configure your database setting. So you need define languages collections like this:

class languages(db.Document):
    name = db.StringField()
    ...

@app.route('/add', methods = ['POST'])
def add_data():
    #language = {'name':'python'}
    lang = languages(name=request.form.get('name','python'))
    lang.save()
    return jsonify({'message':"Inserted Succesfuuly"})

if you want to insert into already created languages collection, you can use pymongo:

from pymongo import MongoClient
client = MongoClient()
db = client.db_name
@app.route('/add', methods = ['POST'])
def add_data():
    #language = {'name':'pyhton'}
    db.languages.insert_one( {'name': request.form.get('name','python')})
    return jsonify({'message':"Inserted Succesfuuly"})
metmirr
  • 4,234
  • 2
  • 21
  • 34