<追加で質問があります。>
御回答を頂いて、大きな部分は解決したのですが、最後で未解決部分があります。
引き続き、教えて頂きたく。コンソール上で複数データ表示するところまでは成功しておりますが、HTML上で複数表示する部分で、スタックしてしまっております。
<背景>
Python Flaskを使用して、DB(mysql)サーバから、データを引っ張ってきて、HTMLに表示すると言うシステム全体を開発しております。
下記の様なシステムです。(Python✛Flaskで開発しております。)
・ユーザーは、HTML(index.html)上で、品目のチェックボックスにチェックを入れて(複数選択も可)、送信ボタンをクリックする。
・選択された品目のスペック情報を、DBから引っ張ってきて、HTML(index1.html)に表示する
<説明>
試行錯誤した結果、下記の様なコードにたどり着きました。(HTMLファイルは本質問とは直接関係ないので、Pythonファイルだけ記載します。)
一つの品目を選択した場合は、キチンと期待したデータを返してきます。(ここはOK)
しかしながら、複数の品目(2つでも3つでも)を選択した場合は、一番最初にチェックされた品目しか、リターンされません。(HTML上は勿論ですが、コンソール上でも同様です。)
<質問>
複数項目を表示(コンソール上に)させる為には、どの様なコードを書けば良いのでしょうか?
for文とWhile文の両方で、丸2日間、色々と試したのですが、どうしても上手くいきません。
よろしくお願いいたします。
<Pythonのコード>
from flask import Flask, render_template,request import pymysql app = Flask(__name__) @app.route('/', methods=['GET']) def get(): return render_template('index.html', \ title = 'Form Sample(get)', \ message = 'Where do you want to go?') def getConnection(): return pymysql.connect( host='localhost', db='first_db', user='root', password='password', charset='utf8', cursorclass=pymysql.cursors.DictCursor ) @app.route('/', methods=['POST']) def select_sql(): connection = getConnection() message = "test" names = request.form.getlist('checkbox') for name in names: cursor = connection.cursor() sql = "select Country, Agency, email from tb3 where Country=%s"; cursor.execute(sql, (name,)) list1 = cursor.fetchall() print(list1) #コンソール上での動作確認用 cursor.close() #can110さんのコメント受け、Indent修正 connection.close() #can110さんのコメント受け、Indent修正 return render_template( 'index1.html', list1 = list1) #can110さんのコメント受け、Indent修正 if __name__ == '__main__': app.run()コード
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/28 13:50 編集
2021/05/01 06:52