首页 > 解决方案 > 使用来自html的flask和jquery将数据传递到mySQL数据库

问题描述

大家好,我正在尝试通过烧瓶将来自 HTML 页面的信息传递到 MySQL 数据库中,但我卡住并感到困惑

这是我的 python-scores.py(数据库连接是带有凭据等的 conn_db)

import mysql.connector as conn
from flask import (
render_template,
Flask,
jsonify,
request,
abort as ab
)

app = Flask(__name__, template_folder='C:\\Users\\thomp\\PycharmProjects\\com661_1819_team_30\\source\\template\\')

# Credentials here in code
WHO = '*********'
PWD = '********'
DATABASE = '********'


def conn_db():
return conn.connect(user=WHO,
                    password=PWD,
                    host='**********',
                    database=DATABASE
                    )


@app.route('/')
def index():
return render_template('scores.html')



@app.route('/addScore', methods=['POST'])
def add_score():
cnx = conn_db()
cursor = cnx.cursor()
MatchID = request.form['matchID']
Home_Score = request.form['homeScore']
Away_Score = request.form['awayScore']

print("Updating score")
if not request.json:
    ab(400)

insert_score = "INSERT INTO scores (Match_ID, Home_Score, Away_Score) VALUES (%s,%s,%s)"
cursor.execute(insert_score, (MatchID, Home_Score, Away_Score))



if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0')

以下是我的 html 文件 score.html (张贴为图片)

HTML 文件 HTml

非常感谢任何帮助,谢谢大家

标签: jqueryhtmlflask

解决方案


根据您给我们的信息,我想您的问题之一是您没有发布输入字段的内容,而是发布了 DOM 对象本身。如果您不确定 javascript 代码,最好在浏览器的开发者控制台中尝试一下。

要修复该错误,只需添加val()到提交功能,例如 var $matchID = $('#matchID').val()

另外我认为您应该从 AJAX 调用的主机参数中删除尾部斜杠,因为您在没有它的情况下在烧瓶中定义了您的路线。

两个旁注:

  1. 您应该转义发布的数据以防止SQL 注入攻击。我相信您使用的框架conn.escape_string()为此目的提供了此功能。
  2. 在 JavaScript 中不习惯在变量名前加上美元符号。我想大多数人更喜欢camelCase。尤其是在使用 jQuery 时,向变量添加额外的美元符号可能会导致混淆。

PS:如果您发布特定问题或遇到的任何错误输出,这将非常有帮助。同样发布屏幕截图而不是实际代码似乎没有必要,并且使调试问题变得更加困难。


推荐阅读