使用python-flask-sqlalchemy链接数据库创建网页

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()

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值