Python 烧瓶数据未存储到数据库中

Python 烧瓶数据未存储到数据库中,python,sqlite,flask,Python,Sqlite,Flask,我正在创建一个Flask应用程序。该应用程序在本地服务器上运行良好。没有错误,但数据未存储在数据库中。我错过了什么 1.routes.py from flask import Flask,render_template,request from models import db ,User from forms import SignupForm app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = "sqlite://

我正在创建一个Flask应用程序。该应用程序在本地服务器上运行良好。没有错误,但数据未存储在数据库中。我错过了什么

1.routes.py

from flask import Flask,render_template,request
from models import db ,User
from forms import SignupForm

app = Flask(__name__)


app.config['SQLALCHEMY_DATABASE_URI'] = "sqlite:////Database.db"
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
db. init_app(app)

app.secret_key ='development_key'

@app.route('/' , methods=['GET','POST'])
def index():
    form = SignupForm() #form object 
    if request.method == 'POST':
        if form.validate() == False:
            return render_template('index.htm' , form=form)
        else:   
        #new user to be added to database   newuser = User(form.fname.data,form.lname.data,form.email.data,form.password.data)
            db.create_all()
            db.session.add(newuser)
            db.session.commit()
            return render_template('profile.htm')
    elif request.method == 'GET':                                                                   
        return render_template('index.htm',form=form)

@app.route('/aboutus')
def aboutus():
    return render_template('aboutus.htm')

@app.route('/profile')
def profile():
    return render_template('profile.htm')

@app.route('/contactus')
def contactus():
    return render_template('contactus.htm') 
from routes import app
app.run(debug = True)
from flask_wtf import FlaskForm as Form
from wtforms import StringField,PasswordField,SubmitField
from wtforms.validators import DataRequired,Email,Length

class SignupForm(Form):
    fname = StringField('First Name',validators=[DataRequired("Please Enter Your FirstName")])
    lname = StringField('Last Name',validators=[DataRequired("Please Enter Your LastName")])
    password = PasswordField('Password',validators=[DataRequired("Password Can't Be Empty"), Length(min=8,message="Password Must Be 8 character Long")])
    email = StringField('Email',validators=[DataRequired("Please Enter Your Email") , Email("Please Enter A Valid Email")]) 
    submit = SubmitField('Register')
from flask_sqlalchemy import SQLAlchemy
from werkzeug import generate_password_hash, check_password_hash

db = SQLAlchemy()

class User(db.Model):
    __tablename__= "users"
    id=db.Column(db.Integer,primary_key=True)
    fname = db.Column(db.String(100))
    lname = db.Column(db.String(100))
    email = db.Column(db.String(100),unique=True)
    password = db.Column(db.String(100))

    def __init__(self,fname,lname,email,password):
        self.fname=fname
        self.lname=lname
        self.email=email
        self.set_password(password)

    def set_password(self,password):
        self.password=generate_password_hash(password)

    def check_password(self,password):
        return check_password_hash(self.password,password)
2.app.py

from flask import Flask,render_template,request
from models import db ,User
from forms import SignupForm

app = Flask(__name__)


app.config['SQLALCHEMY_DATABASE_URI'] = "sqlite:////Database.db"
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
db. init_app(app)

app.secret_key ='development_key'

@app.route('/' , methods=['GET','POST'])
def index():
    form = SignupForm() #form object 
    if request.method == 'POST':
        if form.validate() == False:
            return render_template('index.htm' , form=form)
        else:   
        #new user to be added to database   newuser = User(form.fname.data,form.lname.data,form.email.data,form.password.data)
            db.create_all()
            db.session.add(newuser)
            db.session.commit()
            return render_template('profile.htm')
    elif request.method == 'GET':                                                                   
        return render_template('index.htm',form=form)

@app.route('/aboutus')
def aboutus():
    return render_template('aboutus.htm')

@app.route('/profile')
def profile():
    return render_template('profile.htm')

@app.route('/contactus')
def contactus():
    return render_template('contactus.htm') 
from routes import app
app.run(debug = True)
from flask_wtf import FlaskForm as Form
from wtforms import StringField,PasswordField,SubmitField
from wtforms.validators import DataRequired,Email,Length

class SignupForm(Form):
    fname = StringField('First Name',validators=[DataRequired("Please Enter Your FirstName")])
    lname = StringField('Last Name',validators=[DataRequired("Please Enter Your LastName")])
    password = PasswordField('Password',validators=[DataRequired("Password Can't Be Empty"), Length(min=8,message="Password Must Be 8 character Long")])
    email = StringField('Email',validators=[DataRequired("Please Enter Your Email") , Email("Please Enter A Valid Email")]) 
    submit = SubmitField('Register')
from flask_sqlalchemy import SQLAlchemy
from werkzeug import generate_password_hash, check_password_hash

db = SQLAlchemy()

class User(db.Model):
    __tablename__= "users"
    id=db.Column(db.Integer,primary_key=True)
    fname = db.Column(db.String(100))
    lname = db.Column(db.String(100))
    email = db.Column(db.String(100),unique=True)
    password = db.Column(db.String(100))

    def __init__(self,fname,lname,email,password):
        self.fname=fname
        self.lname=lname
        self.email=email
        self.set_password(password)

    def set_password(self,password):
        self.password=generate_password_hash(password)

    def check_password(self,password):
        return check_password_hash(self.password,password)
3.forms.py

from flask import Flask,render_template,request
from models import db ,User
from forms import SignupForm

app = Flask(__name__)


app.config['SQLALCHEMY_DATABASE_URI'] = "sqlite:////Database.db"
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
db. init_app(app)

app.secret_key ='development_key'

@app.route('/' , methods=['GET','POST'])
def index():
    form = SignupForm() #form object 
    if request.method == 'POST':
        if form.validate() == False:
            return render_template('index.htm' , form=form)
        else:   
        #new user to be added to database   newuser = User(form.fname.data,form.lname.data,form.email.data,form.password.data)
            db.create_all()
            db.session.add(newuser)
            db.session.commit()
            return render_template('profile.htm')
    elif request.method == 'GET':                                                                   
        return render_template('index.htm',form=form)

@app.route('/aboutus')
def aboutus():
    return render_template('aboutus.htm')

@app.route('/profile')
def profile():
    return render_template('profile.htm')

@app.route('/contactus')
def contactus():
    return render_template('contactus.htm') 
from routes import app
app.run(debug = True)
from flask_wtf import FlaskForm as Form
from wtforms import StringField,PasswordField,SubmitField
from wtforms.validators import DataRequired,Email,Length

class SignupForm(Form):
    fname = StringField('First Name',validators=[DataRequired("Please Enter Your FirstName")])
    lname = StringField('Last Name',validators=[DataRequired("Please Enter Your LastName")])
    password = PasswordField('Password',validators=[DataRequired("Password Can't Be Empty"), Length(min=8,message="Password Must Be 8 character Long")])
    email = StringField('Email',validators=[DataRequired("Please Enter Your Email") , Email("Please Enter A Valid Email")]) 
    submit = SubmitField('Register')
from flask_sqlalchemy import SQLAlchemy
from werkzeug import generate_password_hash, check_password_hash

db = SQLAlchemy()

class User(db.Model):
    __tablename__= "users"
    id=db.Column(db.Integer,primary_key=True)
    fname = db.Column(db.String(100))
    lname = db.Column(db.String(100))
    email = db.Column(db.String(100),unique=True)
    password = db.Column(db.String(100))

    def __init__(self,fname,lname,email,password):
        self.fname=fname
        self.lname=lname
        self.email=email
        self.set_password(password)

    def set_password(self,password):
        self.password=generate_password_hash(password)

    def check_password(self,password):
        return check_password_hash(self.password,password)
4.models.py

from flask import Flask,render_template,request
from models import db ,User
from forms import SignupForm

app = Flask(__name__)


app.config['SQLALCHEMY_DATABASE_URI'] = "sqlite:////Database.db"
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
db. init_app(app)

app.secret_key ='development_key'

@app.route('/' , methods=['GET','POST'])
def index():
    form = SignupForm() #form object 
    if request.method == 'POST':
        if form.validate() == False:
            return render_template('index.htm' , form=form)
        else:   
        #new user to be added to database   newuser = User(form.fname.data,form.lname.data,form.email.data,form.password.data)
            db.create_all()
            db.session.add(newuser)
            db.session.commit()
            return render_template('profile.htm')
    elif request.method == 'GET':                                                                   
        return render_template('index.htm',form=form)

@app.route('/aboutus')
def aboutus():
    return render_template('aboutus.htm')

@app.route('/profile')
def profile():
    return render_template('profile.htm')

@app.route('/contactus')
def contactus():
    return render_template('contactus.htm') 
from routes import app
app.run(debug = True)
from flask_wtf import FlaskForm as Form
from wtforms import StringField,PasswordField,SubmitField
from wtforms.validators import DataRequired,Email,Length

class SignupForm(Form):
    fname = StringField('First Name',validators=[DataRequired("Please Enter Your FirstName")])
    lname = StringField('Last Name',validators=[DataRequired("Please Enter Your LastName")])
    password = PasswordField('Password',validators=[DataRequired("Password Can't Be Empty"), Length(min=8,message="Password Must Be 8 character Long")])
    email = StringField('Email',validators=[DataRequired("Please Enter Your Email") , Email("Please Enter A Valid Email")]) 
    submit = SubmitField('Register')
from flask_sqlalchemy import SQLAlchemy
from werkzeug import generate_password_hash, check_password_hash

db = SQLAlchemy()

class User(db.Model):
    __tablename__= "users"
    id=db.Column(db.Integer,primary_key=True)
    fname = db.Column(db.String(100))
    lname = db.Column(db.String(100))
    email = db.Column(db.String(100),unique=True)
    password = db.Column(db.String(100))

    def __init__(self,fname,lname,email,password):
        self.fname=fname
        self.lname=lname
        self.email=email
        self.set_password(password)

    def set_password(self,password):
        self.password=generate_password_hash(password)

    def check_password(self,password):
        return check_password_hash(self.password,password)

我试过你的密码。数据库没有被创建。请尝试以下操作,以确保数据库文件位于正确的位置:

import os
basedir = os.path.abspath(os.path.dirname(__file__))

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir, 'Database.db')

不要将sqlite3用于生产目的,而应使用postgresql,因为sqlite3适用于本地机器,在在线服务器上不起作用,因为它在heroku托管平台上也不起作用,在该平台上,数据库至少每24小时重置一次,您甚至可以检查以下链接您没有提到使用heroku,但我仍然建议这样做,因为heroku是一个非常常见的托管场所。

这并没有解决OP问题,因为数据似乎也没有存储在本地。