我将此脚本导入到路径中:
import sqlite3
conn = sqlite3.connect("c:/DB/tvldb.db")
cursor = conn.cursor()
cursor.execute('''SELECT code, type, issue, item_type, list_code FROM Issues''')
datarows = cursor.fetchall()
conn.close()
打印时效果很好。
这是路线:
from flask import Flask, render_template
import db_issues
app = Flask(__name__)
datarows = db_issues.datarows
@app.route('/issues')
def issues():
return render_template('leftside.html', datarows=datarows)
if __name__ == '__main__':
app.run(debug=True)
这是模板:
<h2 id="pageTitle"> Missing Items</h2>
<table style="width:85%" border="1">
<tr>
<th>Code</th>
<th>Type</th>
<th>Issue</th>
<th>Entry Type</th>
<th>List Code</th>
</tr>
{% for row in datarows %}
<tr>
<td>{{ code }}</td>
<td>{{ type }}</td>
<td>{{ Issue }}</td>
<td>{{ item_type }}</td>
<td>{{ list_code }}</td>
</tr>
{% endfor %}
</table><br><br>
{% endblock %}
表格显示确定,但没有填写任何数据。我一整天都在努力做这件事,没有运气。根据我检查的所有教程和stackoverflow答案,这应该是正确的。任何帮助将不胜感激。
答案 0 :(得分:1)
我认为你应该像这样编写你的表(尚未测试):
{% for row in datarows %}
<tr>
<td>{{ row['code'] }}</td>
<td>{{ row['type'] }}</td>
<td>{{ row['issue'] }}</td>
<td>{{ row['item_type'] }}</td>
<td>{{ row['list_code'] }}</td>
</tr>
{% endfor %}
答案 1 :(得分:0)
仔细查看datarows
。它将是一个元组列表,而不是字典。也就是说,没有名称可以与每个“列”相关联,因此尝试在模板中引用,例如row.code
将失败,因为row
是一个元组。
您可以通过一些工作将行转换为字典,方法是将每个元组中的插槽与cursor.description
中的名称进行匹配。有一个示例说明如何使用sqlite3 docs中的row_factory
。
答案 2 :(得分:-1)
始终调试您传递给渲染页面的变量,这将让您知道数据是否在索引内部
print(variable)
使用此功能,您将确认您需要解析到模板页面的数据