Flask-sqlalchemy insert Datagram error sqlalchemy.exc.OperationalError

when using flask-sqlalchemy to manipulate the mysql database, the information filled in on the registration page cannot be added to the mysql database. The
code is as follows:

db2.py


from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import pymysql
app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = "mysql+pymysql://comejack:123456@localhost:3306/flask"
db = SQLAlchemy(app)

class User(db.Model):
    __tablename__ = "user"
    id = db.Column(db.Integer, primary_key = True)
    username = db.Column(db.String(80), unique = True, nullable = False)
    password = db.Column(db.String(80), nullable = False)
    email = db.Column(db.String(120), unique = True, nullable = False)

    def __repr__(self):
        return "<User %r>" % self.username
db.create_all()

forms.py

from wtforms.fields import BooleanField, TextField, StringField, PasswordField, SubmitField
from wtforms import validators
from wtforms.validators import DataRequired
from flask_wtf import FlaskForm

class RegForm(FlaskForm):
    username = StringField("username", validators = [DataRequired()])
    password = PasswordField("password", validators = [DataRequired()])
    email = StringField("email", validators = [DataRequired()])
    submit = SubmitField("Sign Up")

run.py

-sharp -*- coding:UTF-8 -*---
from flask import Flask, render_template, flash, redirect, request
from forms import LoginForm, RegForm
from flask_wtf.csrf import CSRFProtect
from forms import *
from db2 import *
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = True
db.init_app(app)
CSRFProtect(app)

@app.route("/reg/", methods = ["GET","POST"])
def reg():
    form = RegForm()
    if form.validate_on_submit():
        user1 = User(id = 1, username = form.username.data, password = form.password.data, email = form.email.data)
        print (user1)
        db.session.add(user1)
        db.session.commit()
    return render_template("reg.html", title = "Sign up", form = form)

app.run(host = "0.0.0.0", port = 9000, debug = True)

reg.html


{% extends "base.html" %}
{% block content %}
<h1>reg</h1>
<form action="" method="POST" name="reg">
    {{form.csrf_token}}
    

please enter your username:<br> {{form.username}} <br>

please enter your password:<br> {{form.password}}<br>

please enter your email:<br> {{ form.email }}<br>

{{ form.submit }}

</form> {% endblock %}

after running python3 run.py, enter the registered username and password mailbox on the reg page. Click submit, and an error occurs
sqlalchemy.exc.OperationalError
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: user [SQL: "INSERT INTO user (id, username, password, email) VALUES (?,?)"] [parameters: (1, "123123," 123123, "c122126.com")] (Background on this error at: http://sqlalche.me/e/e3q8)

how to solve this problem?

Mar.12,2021

configuration is mysql, reported error but sqlite3, is your database configuration, right? what library is used in the end? how is the db class defined?
prompts that there is no user table. You need to check whether there is


.

put three sentences of code in db2.py

import pymysql
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://comejack:123456@localhost:3306/flask'

clear and write to the run.py file.


Dear, have you solved this problem? you have encountered the same problem

.
Menu