2

here is my pseudocode for the buy method:

  1. if the request method is post:
    1. remember symbol if provided, if not return apology
    2. check if symbol is valid via lookup()
    3. remember shares if it exists and cast it to an int, if not return apology
    4. get cash amount from user
    5. calculate total amount of purchase (total = price * shares)
    6. passed all the conditions? buy it (cash =- total) and update user cash in user table
    7. create a table and add all the necessary info to it
  2. if the request method is GET
    1. render buy.html page

my problem is in number 7, so if the same user buy something else again, then am going to create a new table for that user again. Or should I check if the table doesn't exists then create it, but if it does then just insert into it? and if so how would I do that checking? all of this question I'm having the assumption that I need to create the table by code ( CREATE TABLE ...) within the buy function and then inserting to it,,, long story short: what should I do? :) thanks in advance

and here is my function so far:

@app.route("/buy", methods=["GET", "POST"]) @login_required def buy(): """Buy shares of stock.""" # if user reached route via POST (as by submitting a form via POST) if request.method == "POST": #remember symbol if it exists if not request.form.get("symbol"): return apology("must provide symbol") else: symbol = request.form.get("symbol") #is the symbol valid? q = lookup(symbol) if q == None: return apology("symbol not correct") #remember shares if it exists and casting it to an int if not request.form.get("shares"): return apology("must provide shares") else: try: shares = int(request.form.get("shares")) except: return apology("invalid shares") if shares <= 0 : return apology("invalid shares") # get cash amount from users rows = db.execute("SELECT cash FROM users WHERE id = :id", id=session["user_id"]) cash = rows[0]["cash"] # calculate total amount of purchase total = q[price] * shares # not enough cash?: if total > cash: return apology("no enough mony") # passed all the conditions? buy it (cash =- total) and update user cash in user table cash -= total db.execute("""UPDATE users SET cash = :cash WHERE id = :id""", cash=cash, id=session["user_id"]) #TODO(7) create a table and add all the necessary info to it # secuess (did not reach here yet,) return render_template("buy.html") # else if user reached route via GET (as by clicking a link or via redirect) else: return render_template("buy.html") 
1
  • So, did you already solve it?, I'm in pset7 doing Buy too. My approach is implementing 3 tables in finance.db : users, transactions and portfolio. Every time a user buy something: <br/>A user cash is updated in users. A complete new row is inserted in transactions. A row is updated, if already exists, or a new row is inserted, in portfolio. Commented May 27, 2017 at 15:19

1 Answer 1

2

I suggest creating a table, called, for example, transactions. In the table, there are columns: user_id, name of the company, quantity of shares, price of 1 share, date. In this way I will keep transactions of all users in 1 table.

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.