Я пытаюсь разработать базовое приложение CRUD с использованием PyMySQL и получить «KEY ERROR» - PullRequest
0 голосов
/ 01 декабря 2019

Ниже приведена ошибка HTML, с которой я столкнулся в браузере при запуске этого файла app.py:

enter werkzeug.exceptions.BadRequestKeyError
werkzeug.exceptions.BadRequestKeyError: 400 Bad Request: The browser (or proxy) sent a request that this server could not understand.
KeyError: 'hst_address' here

Код моего приложения в файле # app.py:

import pymysql.cursors
from flask import Flask
from flask import render_template, request, redirect, url_for, flash, session
from config import Config
import os


app = Flask(__name__)
app.secret_key = "super secret key"


@app.route("/")
def index():
    userId = verifySessionId()
    print("User id[" + str(userId) + "]")
    return render_template("index.html")


@app.route("/home")
def home():
    return render_template("home.html", home =True)

connection = pymysql.connect(host='localhost',
                             user='root',
                             password='',
                             db='F196083B',
                             charset='utf8mb4',
                             cursorclass=pymysql.cursors.DictCursor)


@app.route('/insert/hospital', methods = ['POST'])
def insert_hospital():

    if request.method == "POST":

        hid = int(request.form['hid'])
        hname = request.form['hname']
        hst_address = request.form['dress']
        hst_city = request.form['hst_city']
        hstate = request.form['hstate']
        hzip = int(request.form['hzip'])
        flash("Data Inserted Successfully!", "success")

        cur = connection.cursor()
        cursor.execute("INSERT INTO patients (hid,hname,hst_address,hst_city,hstate,hzip) VALUES (%s, %s, %s,%s,%s,%s)", (hid,hname,hst_address,hst_city,hstate,hzip))
        # cur.execute("INSERT INTO hospital(hid, hname,hst_address,hst_city,hstate,hzip) values (%s, %s, %s, %s, %s, %s)",(hid, hname, hst_address, hst_city, hstate, hzip))
        connection.commit()
        return redirect("/hospital")

@app.route('/update/hospital', methods = ['GET', 'POST'])
def update_hospital():
    print("hi")
    if request.method == "POST":
        for key in request.form.keys():
            print(key)
        flash("Data Updated Successfully!", "success")
        hid = int(request.form['hid'])
        hname = request.form['hname']
        hst_address = request.form['hst_address']
        hst_city = request.form['hst_city']
        hstate = request.form['hstate']
        hzip = int(request.form['hzip'])

        cursor = connection.cursor()

        cur.execute("""
        UPDATE hospital 
        SET hname=%s,hst_address=%s,hst_city=%s,hstate=%s,hzip=%s 
        WHERE hid = %s
        """,(hname, hst_address, hst_city, hstate, hzip, hid))

        connection.commit()
    else:
        return redirect("/hospital")


@app.route('/delete/<int:row_id>', methods = ['GET','POST'])
def delete_hospital(row_id):
    cursor = connection.cursor()
    cursor.execute("DELETE FROM hospital where hid = %s", (row_id,))
    connection.commit()
    flash("Record Deleted Successfully!", "success")
    return redirect(url_for("hospital"))

@app.route("/patients")
def patient():
    sql = "SELECT * from `patient`;"
    result = {}
    with connection.cursor() as cursor:
        cursor.execute(sql)
        result = cursor.fetchall()
        record = cursor.fetchone()

    return render_template("patients.html", patient = result)


if __name__ == "__main__":

    app.run()

{% include 'header.html' %}
<div class="row">
  <div class="col md-12">
    <h2 class="mb-4">Hospital Details:
    </h2>
    <a href="{{ url_for('.add_hospital_view') }}" class="btn btn-sm btn-secondary">Add Hospital</a>
    <p>
      {% with messages = get_flashed_messages() %}
      {% if messages %}
      <ul class=flashes>
        {% for message in messages %}
        <li>{{ message }}</li>
        {% endfor %}
      </ul>
      {% endif %}
      {% endwith %}
    </p>
    {{ table }}
    <table class="table table-striped text-center">
      <thead>
        <tr>
          <th>Id</th>
          <th>Name</th>
          <th>Address</th>
          <th>City</th>
          <th>State</th>
          <th>Zip</th>
          <th>Edit</th>
          <th>Delete</th>
        </tr>
      </thead>
      <tbody>
        {% for row in hospital %}

        <tr>
          <td>{{row.hid}}</td>
          <td>{{row.hname}}</td>
          <td>{{row.hst_address}}</td>
          <td>{{row.hst_city}}</td>
          <td>{{row.hstate}}</td>
          <td>{{row.hzip}}</td>
          <td>
            <a href="{{ url_for('edit_view', row_id = row.hid) }}" class="btn btn-sm btn-secondary"> Edit</a>

          </td>
          <td>
            <a href="{{ url_for('delete_hospital', row_id = row.hid) }}" class="btn btn-sm btn-secondary"> Delete</a>

          </td>
        </tr>
        {% endfor %}
      </tbody>
    </table>
  </div>
</div>
{% include 'footer.html'%}

Везде этот ошибочный ключ указан как правильное значение ключа 'hst-address', но все еще в моей консоли я получаю ключи, отображаемые как (используя операторы печати в приложении. py file):

hi
hid
hname
hst_addrress # Which is wrong it should be displayed as **'address'**
hst_city
hstate
hzip
id

В любом месте моего кода, включая мою базу данных, ключ для столбца адреса предоставляется как 'hst_address'. Я не могу отследить это, откуда именно я получаю эту ключевую ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...