Как связать несколько таблиц базы данных с колбой? - PullRequest
0 голосов
/ 07 июня 2019

Я новичок во Flask, и мне нужно завершить проект, по крайней мере, с двумя таблицами в базе данных. Я уже написал код, полезный для одной таблицы в базе данных. Теперь мне нужна помощь для включения другой таблицы в код, но я не знаю, как.

@app.route('/')
def index():
  cur = mysql.connection.cursor()
  cur.execute("SELECT * FROM student")
  data = cur.fetchall()
  cur.close()
  return render_template('index.html', student=data)


@app.route('/insert', methods=['POST'])
def insert():
  if request.method == "POST":
    flash("Inserted Successfully!")
    name = request.form['name']
    email = request.form['email']
    phone = request.form['phone']

    cur = mysql.connection.cursor()
    cur.execute("INSERT INTO student (name,email,phone) values 
         (%s,%s,%s)", (name, email, phone))
    mysql.connection.commit()
    return redirect(url_for('index'))

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

1 Ответ

0 голосов
/ 07 июня 2019

Ужасный ответ, но это работает, просто сделайте то же самое, указывая на другую таблицу:

@app.route('/table2')
def table2():
  cur = mysql.connection.cursor()
  cur.execute("SELECT * FROM table2")
  data = cur.fetchall()
  cur.close()
  return render_template('table2_visualize.html', data=data)


@app.route('/insert_into_table_2', methods=['POST'])
def insert_into_table_2():
    if request.method == "POST":
        flash("Inserted Successfully!")
        #Params for table2 here, e.g.
        param1_table2 = request.form['param1']

        cur = mysql.connection.cursor()
        cur.execute("INSERT INTO table_2 (param1) values 
        (%s)", (param1_table2))
        mysql.connection.commit()
        return redirect(url_for('table2'))

Теперь, когда вы отправляете сообщение на сервер: port / insert_into_table_2, оно будет вставлено в вашу таблицу2 (которую вы должны определить в своей БД sql)

И когда вы переходите на сервер: port / table2, вы будете отображать шаблон (который вы также должны создать) с именем table2_visualize.html с переменной data.

Вы ДЕЙСТВИТЕЛЬНО хотите не использовать SQL напрямую, то есть то, что называется SQL-инъекцией, но я предпочитаю для домашней работы это может быть хорошо.

Дальнейшее чтение, проверьте MVC и ORM

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