图书管理
from flask import Flask, render_template,request,flash
from flask_sqlalchemy import SQLAlchemy
from flask_wtf import FlaskForm
from wtforms import SubmitField,StringField
from wtforms.validators import DataRequired
app = Flask(__name__)
# 数据库配置:数据库地址/关闭自动跟踪修改
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://wan:mysql@127.0.0.1/flask_sql_demo'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.secret_key='caitianseshouwangzhe'
# 创建数据库对象
db = SQLAlchemy(app)
"""
1、配置数据库
a.导入SQLAlchemy
b.创建db对象,并配置参数
c.终端创建数据库
2. 添加书和作者模型
a.模型继承db.Model
b.__tablename__表名
c.db.Colum字段
d.relationship关系引用
3.添加数据
4,使用模板显示数据库查询的数据
a.查询所有作者信息,让信息传递给模板
b.模板中中按照格式,依次for循环作者和书籍即可(作者获取书籍,用的是关系引用)
5.使用WTF显示表单
6,实现相关的增删逻辑
"""
# 定义书和作者模型
# 作者模型
class Author(db.Model):
# 表名
__tablename__ = 'authors'
id=db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(16), unique=True)
# 关系引用
book = db.relationship('Book',backref='author')
def __repr__(self):
return "Author:%s" % self.name
# 书籍类型
class Book(db.Model):
__tablename__ = 'books'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(16), unique=True)
author_id = db.Column(db.Integer, db.ForeignKey('authors.id'))
def __repr__(self):
return 'Book:%s %s' % (self.name, self.author_id)
# 自定义表单
class LoginForm(FlaskForm):
author = StringField('作者:',validators=[DataRequired()])
book = StringField('书籍:',validators=[DataRequired()])
submit = SubmitField('提交')
@app.route('/')
def hello_world():
# 创建自定义表单类
author_form = LoginForm()
# 查询所有作者信息,让信息传递给模板
if author_form.validate_on_submit():
# 验证通过获取数据
author_name = author_form.author.name
bllk_name = author_form.book.name
# 判断作者是否存在
author = Author.query.filter_by(name=author_name).first()
# 如果作者存在
if author:
pass
else:
# 如果作者不存在,添加作者和书籍
pass
else:
if request.method == 'POST':
flash('参数不全')
author = Author.query.all()
return render_template('books.html',author=author,author_form=author_form)
if __name__ == '__main__':
db.drop_all()
db.create_all()
# 生成数据
au1 = Author(name='黑柳彻子')
au2 = Author(name='杨红樱')
au3 = Author(name='尾田荣一郎')
au4 = Author(name='莫言')
au5 = Author(name='梁漱溟')
au6 = Author(name='鲁迅')
au7 = Author(name='路遥')
db.session.add_all(au1,au2,au3,au4,au5,au6,au7)
# 提交会话
db.session.commit()
bk1 = Book(name='窗边的小豆豆',author_id=au1.id)
bk2 = Book(name='淘气包马小跳',author_id=au2.id)
bk3 = Book(name='海贼王',author_id=au3)
bk4 = Book(name='蛙',author_id=au4)
bk5 = Book(name='我生有涯愿无尽',author_id=au5)
bk6 = Book(name='我的藤野先生',author_id=au6)
bk7 = Book(name='平凡的世界',author_id=au7)
db.session.add_all([bk1,bk2,bk3,bk4,bk5,bk6,bk7])
db.session.commit()
app.run()