Python 使用pymongo和烧瓶将数据插入

Python 使用pymongo和烧瓶将数据插入,python,mongodb,flask,pymongo-3.x,Python,Mongodb,Flask,Pymongo 3.x,单击“提交”按钮时,出现一个错误,显示: TypeError:“Collection”对象不可调用。如果要调用“Database”对象上的“insert”方法,则会失败,因为不存在此类方法。” 这是我的登录代码: from flask import Flask, request, render_template from pymongo import MongoClient @app = Flask(__name__) connection = MongoClient() db = conne

单击“提交”按钮时,出现一个错误,显示:

TypeError:“Collection”对象不可调用。如果要调用“Database”对象上的“insert”方法,则会失败,因为不存在此类方法。”

这是我的登录代码:

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

@app = Flask(__name__)
connection = MongoClient()
db = connection.project #database name.
collection = connection.signup # collection name.

@app.route('/signin/')
def index_show():
     return render_template('signin.html')

@app.route('/signin/', methods = ['POST'])
def signup_form():
   username = request.form['user']
   passowrd = request.form['pass']
   collection.insert({'user': username, 'passoword': passowrd})

if __name__ == '__main__':
   app.run(debug = True)
我的html文件代码如下:

  <!DOCTYPE html>
 <html>
  <head>
    <title></title>
  </head>
  <body>
     <form method="post" action=".">
       <input type="text" name="user" /><br/><br/>
       <input type="password" name="pass" /><br/><br/>
       <input type="submit" name="submit" /><br/><br/>
     </form>
 </body>








该方法已被弃用,并在pymongo 3.x驱动程序中更改为,同时还有用于多文档创建的:

collection.insert_one({'user': username, 'passoword': passowrd})

该方法现在仅在2.x及更低版本中受支持。

我认为,根本原因在于:

collection = connection.signup  # collection name.
与评论相反,您将获得一个名为
signup
的数据库。这应该是:

collection = db.signup

请确保对现有数据库执行此操作,对象已成功返回。 这是我的密码:

from pymongo import MongoClient

client=MongoClient()
db=client.testdb
new={"shopclues":1234,"rating":3}
result=db.testdb.insert_one(new)   
result.inserted_id
ObjectId('59e2f0f2031b4b0b27ecfa09')

我不知道为什么OP getting会出错,但即使是不推荐的版本,在pymongo 3.0.3中仍然可以使用,而当前的版本是version@user3100115你说得对,“不推荐”在这里用词会更好。简而言之,消息的意思是“使用新方法”。@NeerajSharma未定义的对象肯定是错误的迹象。确保您的连接没有错误。请确保您实际使用的代码的“作用域”与此处显示的相同。现在,
集合
应该是全局范围的,因此可用。您的错误表明它不是。这样做后,此代码将成功运行。。。但是没有数据被插入到db@NeerajSharma你怎么查到的?