Jom
Jom

Reputation: 25

Python, Flask: Executemany with multiple fields in HTML form

I don't know how can I improve this code, I'm trying to insert multiple data with same field with different values. Can someone improve my code?

<form action="/submits/ method="POST">

    <input type="text" name="book" value="Divergent">
    <input type="text" name="author" value="Veronica Roth">

    <input type="text" name="book" value="Allegiant">
    <input type="text" name="author" value="Veronica Roth">

    <input type="text" name="book" value="Inferno">
    <input type="text" name="author" value="Dan Brown">

    <input type="submit" value="Submit">

</form>

@app.route('/submits/', methods = ['POST'])
def books():
    if method == "POST":
        BOOK = request.form['book']
        AUTHOR = request.form['author']
        stmt = "INSERT INTO shelf (book_column, author_column) VALUES (%s, %s)"
        c.executemany(stmt, (BOOK, AUTHOR))
        conn.commit()

Upvotes: 1

Views: 1288

Answers (1)

user8060120
user8060120

Reputation:

you can try use getlist:

if method == "POST":
    stmt = "INSERT INTO shelf (book_column, author_column) VALUES (%s, %s)"
    books = request.form.getlist('book')
    authors = request.form.getlist('author')
    for i, book in enumerate(books):
        c.executemany(stmt, (book, authors[i]))
        c.commit()

Upvotes: 1

Related Questions