Я пытаюсь сделать запрос GET, который должен напечатать конкретную строку из моей базы данных в зависимости от того, какие аргументы установлены. Аргумент должен быть названием курса, и я хочу, чтобы он получал все данные из выбранного курса. Может быть немного проще объяснить это как запрос SQL. Запрос может выглядеть так: "SELECT * FROM courselist WHERE course = 'D0024E';" где "курс".
Мне удалось сделать fetchall() и получить все строки из определенной таблицы, но мне не удалось заставить параметры работать правильно, чтобы я мог получить информацию из определенного курса.
from flask import Flask
from flask import render_template
import requests
from flask import request
from flask import jsonify
import mysql.connector
app = Flask(__name__)
mydb = mysql.connector.connect(user='Mille',
auth_plugin='mysql_native_password',
password='jagheter12',
host='localhost',
database='paraplyet')
@app.route('/')
def index():
return render_template("index2.html")
@app.route('/courses', methods= ["GET"])
def getStudentInCourse():
myCursor2 = mydb.cursor()
query2 = ("SELECT * FROM paraplyet.kursinfo")
myCursor2.execute(query2)
myresult2 = myCursor2.fetchall()
return jsonify(myresult2)
if __name__ == '__main__':
app.run()
На самом деле, есть несколько моментов, когда ваш код может потерпеть неудачу, потому что установить правильную интерфейсную внутреннюю цепочку в Flask немного сложно (но в конце стоит). У вас есть интерфейсный HTML- код противоположной части, где вы начинаете свой запрос с правильной переменной, например "курса" в вашем примере, которая может выглядеть следующим образом:
<form action="/courses" method="post">
<input>
<button type="submit"></button>
</form>
Тогда Flask as back-end получит эту переменную (параметр) как часть вашей строки запроса как часть строки URL. Вы можете получить этот параметр в форме:
course = request.form.get('course')
Чтобы достичь этого, вы должны добавить "POST" методы представления, так как он обрабатывает только "GET" -s по умолчанию.
@app.route('/courses', methods=["GET", "POST"])
Затем вы можете использовать эту переменную для завершения ваших внутренних операций:
query2 = ("SELECT * FROM courseInfo where courseCode = '" + course + "';")
эти результаты, то вы можете передать его обратно через интерфейс:
return jsonify(myresult2)
Ваш код на python/flask должен выглядеть примерно так:
from flask import Flask
from flask import render_template
import requests
from flask import request
from flask import jsonify
import mysql.connector
app = Flask(__name__)
mydb = mysql.connector.connect(user='Mille',
auth_plugin='mysql_native_password',
password='jagheter12',
host='localhost',
database='paraplyet')
@app.route('/')
def index():
return render_template("index2.html")
@app.route('/courses', methods= ["GET", "POST"])
def getStudentInCourse():
if request.method == "POST" and request.form.get('course') != '':
myCursor2 = mydb.cursor()
course = request.form.get('course')
query2 = ("SELECT * FROM courseInfo where courseCode = '" + course + "';")
myresult2 = myCursor2.execute(query2)
return jsonify(myresult2)
if __name__ == '__main__':
app.run()
Вам необходимо обновить URL маршрута, чтобы получить параметры
@app.route('/courses/<course_code>', methods= ["GET"])
def getStudentInCourse(course_code):
Затем вы можете использовать этот код_курса для фильтрации результатов.