db.execute не возвращает соответствующие данные. Ошибка при попытке доступа к данным - PullRequest
0 голосов
/ 31 марта 2020

У меня есть таблица под названием «транзакции». Я хочу получить из этой таблицы мою колонку «акции» с некоторыми условиями. Поэтому я делаю следующее:

 available_shares = db.execute("SELECT SUM(shares) as total_shares FROM transactions WHERE id = :id and stock = :symbol GROUP BY stock",
                                        id=session["user_id"], symbol=request.form.get("symbol"))

Чтобы увидеть, работает ли этот код должным образом, я добрался до sqlite 3 и в аргументе командной строки введите следующее:

SELECT SUM(shares) as total_shares FROM transactions WHERE id=8 AND stock= "AAPL" GROUP BY stock;

И он возвращает правильный код:

total_shares
0

Проблема возникает, когда я хочу удалить строку из таблицы транзакций, если total_shares равно 0. Для этого я делаю следующее ( кстати, это не работает):

if available_shares[0]["total_shares"] == 0:
            db.execute("DELETE FROM transactions WHERE id=:id AND stock=:symbol", id=session["user_id"], symbol=request.form.get("symbol"))

Я не могу понять, почему при запуске программы строка все еще там, как если бы программа не распознала это условие, поэтому она ничего не удаляет. Может кто-то мне помочь, пожалуйста? Заранее спасибо!

1 Ответ

0 голосов
/ 31 марта 2020

Когда вы используете SUM (общие ресурсы), вы фактически складываете столбцы вместе, если я не ошибаюсь.

Итак, допустим, у вас есть следующие данные: id. симметричный #. 1. ФБ. 1. 2. Доу. 3. 3. Доу. 3. 4. FB. -1.

Если вы выберете SUM (доли FB, вы получите 0, однако это прибавится в результате добавления столбцов 1 и 4.

Если вы хотите удалить столбец 1 и можете попробовать УДАЛИТЬ ГДЕ символ = FB.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...