Hi all,
I'm following a tutorial on Flask, and I tried rewriting the whole program for practice. I am trying to use a Flask form to submit user input data to a database, but I keep getting this error:
My guess is that I have not set up the database appropriately somewhere, but I am not sure where.
Here is my code
__init__.py
forms.py
models.py
Any advice here would be very helpful. Thank you!
I'm following a tutorial on Flask, and I tried rewriting the whole program for practice. I am trying to use a Flask form to submit user input data to a database, but I keep getting this error:
Code:
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: user
[SQL: INSERT INTO user (username, email_address, password_hash, budget) VALUES (?, ?, ?, ?)]
[parameters: ('jsc2', '[email protected]', 'apple1', 1000)]
(Background on this error at: https://sqlalche.me/e/14/e3q8)
My guess is that I have not set up the database appropriately somewhere, but I am not sure where.
Here is my code
__init__.py
Code:
from flask import Flask, render_template
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///market.db'
app.config['SECRET_KEY'] = 'key'
db = SQLAlchemy(app)
from market import routes
forms.py
Code:
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField
class RegisterForm(FlaskForm):
username = StringField(label='Username:')
email_address = StringField(label='Email')
password1 = PasswordField(label='Password')
password2 = PasswordField(label='Confirm Password')
submit = SubmitField(label='Create Account')
models.py
Code:
from market import db
class User(db.Model):
id = db.Column(db.Integer(), primary_key=True)
username = db.Column(db.String(30), unique=True, nullable=False)
email_address = db.Column(db.String(50), unique=True, nullable=False)
password_hash = db.Column(db.String(60), nullable=False)
budget = db.Column(db.Integer(), nullable=False, default=1000)
items = db.relationship('Item', backref='owned_user', lazy=True)
class Item(db.Model):
id = db.Column(db.Integer(), primary_key=True)
name = db.Column(db.String(30), nullable=False, unique=True)
price = db.Column(db.Integer, nullable=False)
barcode = db.Column(db.String(length=2), nullable=False, unique=True)
description = db.Column(db.String(length=1000), nullable=False, unique=True)
owner = db.Column(db.Integer(), db.ForeignKey('user.id'))
def __repr__(self):
return f'Item {self.name}'
Any advice here would be very helpful. Thank you!