from flask import Flask, request, render_template, redirect, url_for
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
# 创建配置类
class Config:
SQLALCHEMY_DATABASE_URI="mysql+pymysql://root:123456@localhost:3306/flowerDB"
#控制台打印sql语句信息
SQLALCHEMY_ECHO=True
# 将配置类传入配置文件中,创建APP
app.config.from_object(Config)
# 将配置文件传入SQLAlchemy中,创建db对象
db=SQLAlchemy(app)
# 创建模型类
# 登录表
class Users(db.Model):
uid=db.Column(db.Integer, primary_key=True,autoincrement=True)
userd=db.Column(db.String(255), nullable=False)
passwordd=db.Column(db.String(255), nullable=False)
# 创建variety品种表(主表)
class Variety(db.Model):
vid=db.Column(db.Integer, primary_key=True,autoincrement=True)
vname=db.Column(db.String(255),nullable=False)
# 创建反查关系
flowers=db.relationship('Flowers',uselist=True,backref='variety',lazy='dynamic')
# 创建flowers花卉表(从表)
class Flowers(db.Model):
fid=db.Column(db.Integer, primary_key=True,autoincrement=True)
fname=db.Column(db.String(255),nullable=False)
# 外键
vid=db.Column(db.Integer,db.ForeignKey('variety.vid'),nullable=False)
fstate=db.Column(db.String(2),nullable=False)
fnumber=db.Column(db.Integer)
fmoney=db.Column(db.Float)
ftime=db.Column(db.DateTime,nullable=False)
# 自动创建数据库表
@app.route('/')
def create_database():
db.create_all()
return '创建成功'
# 登录
@app.route('/login', methods=['POST','GET'])
def login():
if request.method=='GET':
return render_template('login.html')
elif request.method=='POST':
user=request.form['user']
pad=request.form['pad']
result=Users.query.filter(Users.userd==user,Users.passwordd==pad).all()
if result:
return redirect(url_for('query'))
else:
return '登录失败'
# 显示
@app.route('/query', methods=['POST','GET'])
def query():
if request.method=='GET':
result=db.session.query(Flowers,Variety).join(Flowers).all()
return render_template('query.html',result=result)
elif request.method=='POST':
try:
fstate=request.form['fstate']
result=db.session.query(Flowers,Variety).join(Flowers).filter(Flowers.fstate==fstate).all()
return render_template('query.html',result=result)
except:
result = db.session.query(Flowers, Variety).join(Flowers).all()
return render_template('query.html', result=result)
# 添加
@app.route('/add', methods=['POST','GET'])
def add():
if request.method == 'GET':
result=Variety.query.all()
return render_template('add.html',result=result)
elif request.method == 'POST':
fname=request.form['fname']
fstate=request.form['fstate']
fnumber=request.form['fnumber']
fmoney=request.form['fmoney']
ftime=request.form['ftime']
vid=request.form['vid']
flowers=Flowers(fname=fname,fstate=fstate,fnumber=fnumber,fmoney=fmoney,ftime=ftime,vid=vid)
db.session.add(flowers)
db.session.commit()
return redirect(url_for('query'))
# 删除
@app.route('/delete',methods=['POST','GET'])
def delete():
fstate=request.args.get('fstate')
result=Flowers.query.filter(Flowers.fstate==fstate).first()
db.session.delete(result)
db.session.commit()
return redirect(url_for('query'))
if __name__ == '__main__':
app.run()
使用python-flask-sqlalchemy链接数据库创建网页
最新推荐文章于 2023-07-04 18:45:09 发布