2017-02-12 4 views
-1

У меня есть этот сценарий, который я импортировать в маршрут:Колба запрос не работает с таблицей

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, которые я проверил, это должно быть правильно. Любая помощь будет принята с благодарностью.

ответ

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 %} 
+0

Я пробовал, и это не сработало. – user2774415

-1

Всегда отлаживать переменную, вы передаете к предоставленному странице это даст вам знать, что ли данные внутри индекс или не

print(variable) 

с помощью этого вы получите подтверждение, что то, что данные, которые вы должны разобрать на странице шаблона

+0

Я сделал это в отдельном скрипте – user2774415

0

более внимательно на datarows. Это будет список кортежей, а не словарь. То есть нет имен для связи с каждым «столбцом», поэтому попытки ссылки в шаблоне, скажем, row.code, будут терпеть неудачу, потому что row является кортежем.

Вы можете с небольшой работой перевести строки в словари, сопоставляя слоты в каждом кортеже с именами, найденными в cursor.description. Вот пример того, как это сделать, используя row_factory в sqlite3 docs.

Смежные вопросы