2

当我单击提交按钮时,我收到一条错误消息:

“TypeError:'Collection' 对象不可调用。如果您打算在 'Database' 对象上调用 'insert' 方法,它会失败,因为不存在这样的方法。”

这是我的 signin.py 代码:

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>

4

3 回答 3

5

该方法已被弃用并更改为.insert_one()在 pymongo 3.x 驱动程序中,还有.insert_many()用于创建多个文档:

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

.insert()方法现在仅在 2.x 及更低版本中支持。

于 2015-07-19T09:36:49.520 回答
1

我认为,根本原因在于这一行:

collection = connection.signup  # collection name.

与评论相反,您将获得一个名为signup. 那应该是:

collection = db.signup
于 2015-07-19T16:04:04.290 回答
0

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

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')
于 2017-10-15T05:17:16.137 回答