如何用flask连接多个表数据库?

时间:2019-06-07 14:43:18

标签: python flask

我是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 :(得分:0)

可怕的答案,但是它可以工作,只是指向另一张表做同样的事情:

@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'))

现在,当您发布到server:port / insert_into_table_2时,它将被插入到table2(必须在sql DB中定义)

当您转到server:port / table2时,将呈现一个名为table2_visualize.html的模板(您也必须创建),该模板带有名为data的变量。

您真的不希望直接使用SQL,这就是所谓的sql注入,但是我认为可以做功课。

进一步阅读,检查MVC和ORM