Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从现有SQLite数据库中获取特定行的列,以便在Flask应用程序中使用?_Python_Sqlite_Flask - Fatal编程技术网

Python 如何从现有SQLite数据库中获取特定行的列,以便在Flask应用程序中使用?

Python 如何从现有SQLite数据库中获取特定行的列,以便在Flask应用程序中使用?,python,sqlite,flask,Python,Sqlite,Flask,我正在开发一个Flask应用程序,我有一个网页,希望在其中显示现有的SQLite数据库表 这是我的python文件: import random from flask import Flask, redirect, render_template, request, session import sys; sys.path import sqlite3 import pandas as pd app = Flask(__name__) sql_connect = sqlite3.conne

我正在开发一个Flask应用程序,我有一个网页,希望在其中显示现有的SQLite数据库表

这是我的python文件:

import random
from flask import Flask, redirect, render_template, request, session
import sys; sys.path
import sqlite3
import pandas as pd 

app = Flask(__name__)

sql_connect = sqlite3.connect('questions.sqlite3', check_same_thread = False)

cursor = sql_connect.cursor()

@app.route("/database")
def database():
    MCQTable = cursor.execute("SELECT * FROM MCQ;").fetchall()
    return render_template("database.html", MCQTable = MCQTable)

这是我在/database route中的html代码,其中我的表中的列是“question”、“ChoiceA”、“ChoiceB”、“ChoiceC”、“ChoiceD”、“CorrectAnswer”:


问题:
精选
精选
ChoiceC
精选
正确答案
{MCQTable%中的行的%s}
{{row[“问题”]}
{{row[“ChoiceA”]}
{{row[“ChoiceB”]}
{{row[“ChoiceC”]}
{{row[“ChoiceD”]}
{{row[“CorrectAnswer”]}
{%endfor%}

但是,当我进行测试时,行[“column”]不起作用。我知道我的SQL表中没有问题,因为我之前做过一个测试,在python中选择了一个列而不是整个表,结果很好。但是,我想这样做,因为我认为这样更有效。

一个流行的解决方案是使用SQLAlchemy。 如果在项目中使用SQLAlchemy,则可以执行以下操作:

data_selected = MCQ.query.filter_by(*insert conditional statement here in order to find the row you care about*-> i.e.column_name='XXX').first()

或者,如果要选择所有结果,也可以执行.all(),返回元组列表,而不是字典,因此没有“键”。考虑使用内置的,这样就可以按名称访问列。

ok,谢谢,我不知道FutCHALL返回元组列表。最后,我用第[1]行替换了第[“问题”]行,它通过访问元组中的项来工作。谢谢这个答案对你有帮助吗?
data_selected = MCQ.query.filter_by(*insert conditional statement here in order to find the row you care about*-> i.e.column_name='XXX').first()