Создание отдельных запросов CRUD с использованием Flask в одном файле Python - PullRequest
0 голосов
/ 29 сентября 2019

Я здесь, чтобы узнать, можно ли объединить синтаксис запроса в 1 файле Python.Например, вот так я сделал программу для добавления данных об издателях и авторах.Они находятся в разных таблицах, поэтому я должен сделать 2 разных синтаксиса запроса.Итак, я написал код, подобный этому ...

from flask import Flask, render_template, request, redirect, url_for, flash
from flask_mysqldb import MySQL

app = Flask(__name__)
app.secret_key = "flash message"

app.config['MYSQL_HOST'] = 'localhost'
app.config['MYSQL_USER'] = 'root'
app.config['MYSQL_PASSWORD'] = ''
app.config['MYSQL_DB'] = 'db_tokobuku'

mysql = MySQL(app)

# query pengarang (authors)
@app.route('/')
def lihat():

    cur = mysql.connection.cursor()
    cur.execute("SELECT * FROM tb_pengarang")
    data = cur.fetchall()
    cur.close()
    return render_template('pengarang/lihat.html', tb_pengarang = data)

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

    if  request.method == "POST":
        flash("Pengarang Berhasil Di Tambahkan")

        name = request.form['name']

        cur = mysql.connection.cursor()
        cur.execute("INSERT INTO tb_pengarang (nama_pengarang) VALUES (%s)", (name,))
        mysql.connection.commit(),
        return redirect(url_for('lihat'))

@app.route('/update', methods = ['POST', 'GET'])
def update():
    if request.method == 'POST':
        id_pengarang = request.form['id']
        name = request.form['name']

        cur = mysql.connection.cursor()
        cur.execute("UPDATE tb_pengarang SET nama_pengarang = %s WHERE id_pengarang = %s", (name, id_pengarang))
        flash("Pengarang Telah Di Update")
        mysql.connection.commit(),
        return redirect(url_for('lihat'))

@app.route('/delete/<string:id_pengarang>', methods = ['GET'])
def delete(id_pengarang):

    flash("Data Berhasil Di Hapus")

    cur = mysql.connection.cursor()
    cur.execute("DELETE FROM tb_pengarang WHERE id_pengarang = %s", {id_pengarang})
    mysql.connection.commit()
    return redirect(url_for('lihat'))


# query penerbit (publisher)
@app.route('/')
def lihat_penerbit():

    cur = mysql.connection.cursor()
    cur.execute("SELECT * FROM tb_penerbit")
    data = cur.fetchall()
    cur.close()
    return render_template('penerbit/lihat_penerbit.html', tb_penerbit = data)

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

    if  request.method == "POST":
        flash("Penerbit Berhasil Di Tambahkan")

        name = request.form['name']

        cur = mysql.connection.cursor()
        cur.execute("INSERT INTO tb_penerbit (nama_penerbit) VALUES (%s)", (name,))
        mysql.connection.commit(),
        return redirect(url_for('lihat_penerbit'))

@app.route('/update_penerbit', methods = ['POST', 'GET'])
def update_penerbit():
    if request.method == 'POST':
        id_penerbit = request.form['id']
        name = request.form['name']

        cur = mysql.connection.cursor()
        cur.execute("UPDATE tb_pengarang SET nama_penerbit = %s WHERE id_penerbit = %s", (name, id_penerbit))
        flash("Penerbit Telah Di Update")
        mysql.connection.commit(),
        return redirect(url_for('lihat_penerbit'))

@app.route('/delete_penerbit/<string:id_penerbit>', methods = ['GET'])
def delete_penerbit(id_penerbit):

    flash("Data Berhasil Di Hapus")

    cur = mysql.connection.cursor()
    cur.execute("DELETE FROM tb_penerbit WHERE id_penerbit = %s", {id_penerbit})
    mysql.connection.commit()
    return redirect(url_for('lihat_penerbit'))

@app.route('/link_penerbit', methods=['GET', 'POST'])
def link_penerbit():
    if request.method == 'POST':
        return redirect(url_for('penerbit/lihat_penerbit.html'))
    return render_template('penerbit/lihat_penerbit.html')



if __name__ == "__main__":
    app.run(debug = True)

, если я запустил код, который я сделал, результат для функции запроса автора (pengarang) все работает хорошо, но для запроса издателя (penerbit)это функция только для добавления данных (издатель успешно вошел в базу данных), иначе это не работает.такие как просмотр, редактирование и удаление данных.

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