flask-mysql ProgrammingError:在字符串格式化过程中并非所有参数都被转换

时间:2018-04-29 02:54:23

标签: python mysql flask

我正在尝试使用flask + mysql制作一个简单的程序。 我只是在POST中收到两个参数并写入数据库:

@app.route('/upd',methods=['POST'])
def upd():
   _lat = request.form['lat']
   _lng = request.form['lng']

   cur = mysql.connection.cursor()
   cur.execute('insert into locations(lat,lng) values (?,?)',(_lat,_lng,))
   cur.commit()

   return jsonify(request.form)

问题在于,当我尝试从客户端发布数据时,我得到了:

ProgrammingError: not all arguments converted during string formatting
127.0.0.1 - - [28/Apr/2018 23:46:14] "POST /upd HTTP/1.1" 500 -

如果我评论SQL语句,客户端将收到jsonify的输出,看起来是正确的:

{
"lat": "3.2001",
"lng": "-11.45465"
}

1 个答案:

答案 0 :(得分:1)

您需要使用%s或%(名称)参数样式according to the docs指定变量:

  

在元组或字典参数中找到的参数绑定到操作中的变量。使用%s或%(name)参数样式指定变量(即使用格式或pyformat样式)。

cur.execute('insert into locations(lat,lng) values (%s,%s)' % (_lat,_lng,))

应该有用。