Code: Select all
@app.route("/buy", methods=["GET", "POST"])
@login_required
def buy():
"""Buy shares of stock"""
if request.method == "GET":
return render_template("buy.html")
else:
symbol = request.form.get("symbol")
shares = request.form.get("shares")
if not symbol:
return apology("must give symbol", 403)
quote = lookup(symbol)
if quote == None:
return apology("symbol dose not exist", 403)
if not shares:
return apology("must give number of shares", 403)
if int(shares) < 0:
return apology("share must be positive", 403)
cost = int(shares) * quote["price"]
user_id = session["user_id"]
cash = db.execute("SELECT cash FROM users WHERE id = :user_id", user_id=user_id)
user_cash = cash[0]["cash"]
if user_cash < cost:
return apology("you dont have enough mony")
new_cash = user_cash - cost
db.execute("update users set cash= ? WHERE id = ?",new_cash, user_id)
db.execute("INSERT INTO transactions (user_id, symbol, shares, price) values(:user_id, :symbol, :shares, :price)",user_id = session["user_id"], symbol=symbol, shares=shares, price=quote["price"])
flash("Bought!")
return redirect("/")
Code: Select all
INFO: SELECT cash FROM users WHERE id = 1
INFO: update users set cash= 9663.759999999995 WHERE id = 1
ERROR: INSERT INTO transactions (user_id, symbol, shares, price) values(1, 't', '1', 18.68)
ERROR: Exception on /buy [POST]
Traceback (most recent call last):
File "/usr/local/lib/python3.12/site-packages/flask/app.py", line 1473, in wsgi_app
response = self.full_dispatch_request()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/flask/app.py", line 882, in full_dispatch_request
rv = self.handle_user_exception(e)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/flask/app.py", line 880, in full_dispatch_request
rv = self.dispatch_request()
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/flask/app.py", line 865, in dispatch_request
return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/workspaces/111413212/finance/helpers.py", line 48, in decorated_function
return f(*args, **kwargs)
^^^^^^^^^^^^^^^^^^
File "/workspaces/111413212/finance/app.py", line 94, in buy
db.execute("INSERT INTO transactions (user_id, symbol, shares, price) values(:user_id, :symbol, :shares, :price)",user_id = session["user_id"], symbol=symbol, shares=shares, price=quote["price"])
File "/usr/local/lib/python3.12/site-packages/cs50/sql.py", line 28, in decorator
return f(*args, **kwargs)
^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/cs50/sql.py", line 473, in execute
raise e
RuntimeError: no such table: main.user
INFO: 127.0.0.1 - - [04/Jul/2024 16:00:49] "POST /buy HTTP/1.1" 500
Ich versuche es zu entfernen, dann funktioniert der Code ohne Fehler
und Im Terminal ist der in die Tabelle eingefügte Satz ... rot
und ich habe versucht, es anders zu machen:
Code: Select all
db.execute("INSERT INTO transactions (user_id, symbol, shares, price) values(?, ?, ?, ?)",user_id , quote["symbol"], shares, quote["price"])