Завдання викликає неабиякий інтерес: як ефективно витягти рядки з HTML-таблиці у список у Python та потім вставити ці рядки у таблицю SQL. Проблема виникає, коли кількість вставлених рядків у таблицю SQL не відповідає очікуваній кількості, і вставлені рядки містять повторювані значення замість унікальних.
Ось відрізок HTML-коду:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<body> <h1>Edit Form</h1> <form action="#" method="POST"> <form action="/submit" method="post"> <table> <thead> <tr> <th>BOL No</th> <th>Qty</th> <th>Heat</th> <th>ITEM DESC</th> <th>WEIGHT</th> </tr> </thead> <tbody> {% for row in data %} <tr> <td><input type="text" name="BOLno" value="{{ BOLno }}"></td> <td><input type="number" name="SERLTQTY" value="{{ row.SERLTQTY }}"></td> <td><input type="text" name="SERLTNUM" value="{{ row.SERLTNUM }}"></td> <td><input type="text" name="ITEMDESC" value="{{ row.ITEMDESC }}"></td> <td><input type="number" name="WEIGHT" value="{{ row.WEIGHT }}"></td> </tr> {% endfor %} </tbody> </table> <button type="submit">Submit</button> </form> </body> |
І ось фрагмент Python-коду:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
@views.route('/edit/<bol>', methods=['POST', 'GET']) def editbol(bol): sql_conn = odbc.connect('DRIVER=xxxxxxxxxxxxx;SERVER=xxxxxx;DATABASE=xxxxxxx;UID=xxxxxxx;PWD=xxxxxxx;') csr = sql_conn.cursor() BOLno = None SERLTQTY = None ITEMDESC = None WEIGHT = None if request.method == 'GET': csr.execute(f"select * from BOL_VIEW where bolno = {bol}") data = csr.fetchall() return render_template('edit.html', data = data, BOLno = bol) elif request.method == 'POST': formdata = [] for x in request.form: BOLno = request.form['BOLno'] SERLTQTY = request.form['SERLTQTY'] SERLTNUM = request.form['SERLTNUM'] ITEMDESC = request.form['ITEMDESC'] WEIGHT = request.form['WEIGHT'] formdata.append((BOLno, SERLTQTY, SERLTNUM, ITEMDESC, WEIGHT )) for line in formdata: csr.execute("INSERT INTO BOL_HIST_Rev2 (BOLno, SERLTQTY, SERLTNUM, ITEMDESC, WEIGHT) VALUES (?, ?, ?, ?, ?)", (BOLno, SERLTQTY, SERLTNUM, ITEMDESC, WEIGHT)) sql_conn.commit() csr.close() sql_conn.close() return f'' else: return f'<h1>{bol} end</h1>' |
Здається, проблема виникає в обробці циклів for у Python-коді, як вказано в умові проблеми. Проте точно визначити помилку було складно, і я вже деякий час застряг на цьому.
Якщо у вас є які-небудь думки або пропозиції щодо того, як вирішити цю проблему ефективніше, ваша допомога буде вельми вдячною.