简体   繁体   中英

Displaying Table from Database using Python, Flask, Sqlalchemy, and HTML on pythonanywhere

So I am trying to display a table from my db on my web app. however when I run the program, I get all of my data on 1 row instead of lined up in the proper columns. Parts of my HTML and Python code is below. I am using pythonanywhere to launch my web app. Any advice on where I am messing up?

ID.HTML

<table style="margin-left: 20px;">
<!-- Table headers -->
    <th>
         <tr style="color: black; ">

        <th>Last Name</th>
        <th>First Name</th>
        <th>SSN</th>
        <th>MRN</th>
        <th>Age</th>
        <th>Sex</th>
        <th>Incounter Type</th>
        <th>Provider Last Name</th>
        <th>Provider First Name</th>
        <th>Admin Date</th>
        <th>Admin Time</th>
        <th>Hospital</th>
        <th>Floor</th>
        <th>Room</th>
        <th>Bed</th>

        </tr>
    </th>

    <tr>
    {%for patient_id in query%}

    <td>
        {{patient_id.lname}}
     </td>
     <td>
        {{patient_id.fname}}
    </td>
    <td>
        {{patient_id.ssn}}
    </td>
    <td>
        {{patient_id.mrn}}
    </td>
    <td>
        {{patient_id.age}}
    </td>
    <td>
        {{patient_id.sex}}
    </td>
    <td>
        {{patient_id.incounter_type}}
    </td>
    <td>
        {{patient_id.provider_lname}}
    </td>
    <td>
        {{patient_id.provider_fname}}
    </td>
    <td>
        {{patient_id.admin_date}}
    </td>
    <td>
        {{patient_id.admin_time}}
    </td>
    <td>
        {{patient_id.location_hospital}}
    </td>
    <td>
        {{patient_id.location_floor}}
    </td>
    <td>
        {{patient_id.location_room}}
    </td>
    <td>
        {{patient_id.location_bed}}
    </td>
    {%endfor%}
    </tr>
 </table>

flask_app.py

class patient_ID(db.Model):

__tablename__ = "patient_ID"

incounter_types = [('inpatient', 'inpatient'),
               ('outpatient', 'outpatient')
               ]

lname = db.Column(db.String(128))
fname = db.Column(db.String(128))
ssn = db.Column(db.String(9))
mrn = db.Column(db.String(8),primary_key=True)
age = db.Column(db.String(3))
sex = db.Column(db.String(6))
incounter_type = db.Column(db.String(128))#, choices=incounter_types)
provider_lname = db.Column(db.String(128))
provider_fname = db.Column(db.String(128))
admin_date = db.Column(db.String(128))
admin_time = db.Column(db.String(128))
location_hospital = db.Column(db.String(128))
location_floor = db.Column(db.String(3))
location_room = db.Column(db.String(10))
location_bed = db.Column(db.String(1))


@app.route("/Patient_Info/", methods=["GET", "POST"])
@login_required
def patient_info_page():
     if request.method == "GET":
         return render_template("ID.html", query=patient_ID.query.all())

     if not current_user.is_authenticated:
         return redirect(url_for('index'))
     ID = patient_ID(mrn=request.form["mrns"])

     return redirect(url_for('patient_info_page'), query)

You want a row for each patient, so write:

{% for patient_id in query %}
<tr>
  <td>
    {{patient_id.lname}}
  </td>
...
</tr>
{% endfor %}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM