Flask查询不使用表

时间:2017-02-12 05:32:34

标签: python flask sqlite

我将此脚本导入到路径中:

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答案,这应该是正确的。任何帮助将不胜感激。

3 个答案:

答案 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)

使用此功能,您将确认您需要解析到模板页面的数据