SQLite Выполнить запрос из объединенных таблиц - PullRequest
0 голосов
/ 09 декабря 2018

Я борюсь с моим финальным проектом.Мне нужно объединить 2 таблицы "книга" и "список ID" и выполнить значения в index.html.Вот код Python и HTML (также Таблица идентификаторов Таблица книг ).Если кто-то знает, где произошла ошибка, я буду благодарен!

@app.route("/", methods=["GET", "POST"])
@login_required
def index():
    """Show reading list"""

    if request.method == "GET":
        # Execute list joining "book" and "idlist" tables
        list = db.execute("SELECT Title1, Status, LastUpdate, Author, Year, Country, Language FROM idlist INNER JOIN book on idlist.Title1=book.Title WHERE id=:id",
                          id=session["user_id"])
        # If the user has no list yet
        if not list:
            el = {'Title1': "No", 'Author': "No", 'Year': "No", 'Country': "No", 'Language': "No", 'Status': "No", 'LastUpdate': "No"}
            return render_template("index.html")
        else:
            return render_template("index.html")
    return render_template("index.html")

html должен выполнить значения из объединенных таблиц

{% extends "layout.html" %}

{% block title %}
    Index
{% endblock %}
{% block main %}
        <table style="width:100%">
            <tr>
                <th>Title</th>
                <th>Author</th>
                <th>Year</th>
                <th>Country</th>
                <th>Language</th>
                <th>Status</th>
                <th>Last update</th>
            </tr>
                {% for el in list %}
                    <tr>
                        <td>
                            {{ el.Title1 }}
                        </td>
                        <td>
                            {{ el.Author }}
                        </td>
                        <td>
                            {{ el.Year }}
                        </td>
                        <td>
                            {{ el.Country }}
                        </td>
                        <td>
                            {{ el.Language }}
                        </td>
                        <td>
                            {{ el.Status }}
                        </td>
                        <td>
                            {{ el.LastUpdate }}
                        </td>
                    </tr>
                {% endfor %}
        </table>
{% endblock %}

Вот ошибка при входе в систему с идентификатором пользователя16: RuntimeError: рядом с «update»: синтаксическая ошибка [SQL: «ВЫБЕРИТЕ Заголовок, Статус, Обновление, Автор, Год, Страна, Язык ИЗ ИДЛИСТА ВНУТРЕННЯЯ РЕГИСТРАЦИЯ книга по idlis t.Title = book.Title WHERE id = 16 ']

1 Ответ

0 голосов
/ 17 декабря 2018

Моя программа должна объединить 2 таблицы "book" и "idlist" и выполнить значения в index.html.Основная проблема заключалась в неправильном использовании метода render_template (), так как я не передал в него никаких данных.Так как мне нужно было выразить свой «список» в html-форме, правильное использование будет «return render_template (« index.html », list = list)»

Ниже приведено решение:

@app.route("/", methods=["GET", "POST"])
@login_required
def index():
    """Show reading list"""

    if request.method == "GET":
        quote1 = db.execute("SELECT quote FROM quotes ORDER BY random() LIMIT 1")
        # Execute list joining "book" and "idlist" tables
        list = db.execute("SELECT Title1, Status, LastUpdate, Author, Year, Country, Language FROM idlist INNER JOIN book on idlist.Title1=book.Title WHERE id=:id",
                          id=session["user_id"])
        # If the user has no list yet
        if not list:
            el = {'Title1': "No", 'Author': "No", 'Year': "No", 'Country': "No", 'Language': "No", 'Status': "No", 'LastUpdate': "No"}
        return render_template("index.html", yourquote=quote1[0]["quote"])

    return render_template("index.html")

Вот HTML-форма:

{% extends "layout.html" %}

{% block title %}
    Index
{% endblock %}
{% block main %}
        <table style="width:100%">
            <tr>
                <th>Title</th>
                <th>Author</th>
                <th>Year</th>
                <th>Country</th>
                <th>Language</th>
                <th>Status</th>
                <th>Last update</th>
            </tr>
                {% for el in list %}
                    <tr>
                        <td>
                            {{ el.Title1 }}
                        </td>
                        <td>
                            {{ el.Author }}
                        </td>
                        <td>
                            {{ el.Year }}
                        </td>
                        <td>
                            {{ el.Country }}
                        </td>
                        <td>
                            {{ el.Language }}
                        </td>
                        <td>
                            {{ el.Status }}
                        </td>
                        <td>
                            {{ el.LastUpdate }}
                        </td>
                    </tr>
                {% endfor %}
        </table>
        <tr>
            <p> </p>

        </tr>
        <a class="card-header" href="/"><span class="blue">Inspire yourself</span></a>
         <tr>
            <p> </p>

        </tr>
        <a class="card-title"><span class="grey"><p>{{ yourquote }}</p></span></a>

{% endblock %}
...