当我点击提交按钮时,我收到一条错误消息:
“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>
答案 0 :(得分:4)
该方法已被弃用,并在pymongo 3.x驱动程序中更改为.insert_one()
,还有.insert_many()
用于创建多个文档:
collection.insert_one({'user': username, 'passoword': passowrd})
.insert()
方法现在仅在2.x及更低版本系列中受支持。
答案 1 :(得分:1)
我认为,根本原因在于这一行:
collection = connection.signup # collection name.
与评论相反,您获得了名为signup
的数据库。那应该是:
collection = db.signup
答案 2 :(得分: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')