実現したいこと
FlaskのFlask-SQLAlchemyによるデータベースの特定のカラムの抽出。
前提
上の画像のquiz.dbにあるQuizsetテーブルの「Quizsetname」のカラムの中身を抽出したいです。僕の理想としては抽出して作られたリストは
[ポケモンクイズ,麻雀クイズ,ポケモンクイズ,麻雀クイズ]
となって欲しいのですが。質問に貼ってあるソースコードで実行すると結果がなぜか
[('ポケモンクイズ',), ('麻雀クイズ',), ('ポケモンクイズ',), ('麻雀クイズ',)]
というように、余計な「()」「' '」「,」が付いてしまいます。アドバイスいただけると嬉しいです。
発生している問題・エラーメッセージ
エラー文ではありませんが、結果を表示させていただきます。
* Serving Flask app 'test' * Debug mode: on WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Running on http://127.0.0.1:5000 Press CTRL+C to quit * Restarting with stat * Debugger is active! * Debugger PIN: 130-793-479 [('ポケモンクイズ',), ('麻雀クイズ',), ('ポケモンクイズ',), ('麻雀クイズ',)] 127.0.0.1 - - [13/May/2023 16:15:15] "GET / HTTP/1.1" 200 -
該当のソースコード
test.py
1from flask import Flask 2from flask import render_template 3from flask_sqlalchemy import SQLAlchemy 4 5app = Flask(__name__) 6app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///quiz.db" 7db = SQLAlchemy(app) 8 9class Quizset(db.Model): 10 Quizsetname = db.Column(db.String) 11 id = db.Column(db.Integer, primary_key=True) 12 problem = db.Column(db.String(100),nullable=False) 13 answer = db.Column(db.String(20), nullable=False) 14 reading = db.Column(db.String(20), nullable=False) 15 16@app.route("/") 17def top(): 18 quizsetname = Quizset.query.with_entities(Quizset.Quizsetname).all() 19 print(quizsetname) 20 return
試したこと
top関数の中身を変更して
test.py
1def top(): 2 quizsetname = Quizset.query.with_entities(Quizset.Quizsetname).all() 3 for i in quizsetname: 4 i = i[2:] 5 i = i[:4] 6 print(i) 7 return render_template("test.html", quizsetname=quizsetname)
にしてリストの中身をいじろうとしてみたのですが、結果は
となり、なぜか「()」以外の文字が全て消えてしまいました。
補足情報(FW/ツールのバージョンなど)
Flask==2.3.2
Jinja2==3.1.2
Flask-SQLAlchemy==3.0.3

回答1件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。
2023/05/15 08:06