Проблема финансовой истории CS50 с SQL SELECT - PullRequest
0 голосов
/ 13 марта 2019

Я не понимаю, почему я не могу выбрать столбец «транзакция» из моего портфолио TABLE. Я создал СТОЛ, используя следующий синтаксис:

CREATE TABLE 'portfolio' ('transaction' integer primary key autoincrement, 
'datetime' datetime, user_id bigint, 'symbol' varchar(5), 'price' numeric(8, 
2), 'shares' integer, 'total' numeric(8, 2));

Транзакция ведет текущий подсчет ордеров на покупку / продажу. Когда у меня есть транзакция в операторе SELECT, она выдает мне ошибку, см. Ниже:

RuntimeError: near "transaction": syntax error [SQL: 'SELECT transaction, 
datetime, symbol, shares, price FROM portfolio WHERE user_id = 2'] 
(Background on this error at: http://sqlalche.me/e/e3q8)

Если я не включаю транзакцию в код Python, то все работает, и таблица отображается на веб-странице. Что мешает мне выбрать транзакцию? В коде я включил транзакцию.

@app.route("/history")
@login_required
def history():
    """Show history of transactions"""
    #create table
    history = db.execute("SELECT transaction, datetime, symbol, shares, price FROM portfolio WHERE user_id = :user_id", user_id = session["user_id"])

    history_info = []
    for info in history:
        transaction = info["transaction"]
        datetime = info["datetime"]
        symbol = info["symbol"]
        shares = info["shares"]
        price = info["price"]
        total = abs(shares * price)
        history_info.append({"transaction":transaction, "datetime":datetime, "symbol":symbol, "shares":shares, "price":price, "total":total})

    return render_template("history.html", history_info = history_info)

HTML ниже - это то, что будет отображаться на веб-странице. В настоящее время я прекратил транзакцию.

{% extends "layout.html" %}

{% block title %}
    History
{% endblock %}

{% block main %}
    <table class="table table-bordered">
        <thead>
            <th>Purchase Date/Time</th>
            <th>Symbol</th>
            <th>Shares</th>
            <th>Price</th>
            <th>Total</th>
        </thead>
        <tbody>
            {% for stock in history_info %}
                <tr>
                    <td>{{ stock.datetime }}</td>
                    <td>{{ stock.symbol }}</td>
                    <td>{{ stock.shares }}</td>
                    <td>{{ stock.price }}</td>
                    <td>{{ stock.total }}</td>
                </tr>
            {% endfor %}
        </tbody>
   </table>
{% endblock %}

1 Ответ

2 голосов
/ 13 марта 2019

Решено ....

transaction - зарезервированное слово.

Попробуйте заключить в скобки [transaction] и посмотрите, подходит ли вам это.

...