创建数据库连接信息,定义模型
from flask import Flask, render_template, redirect, url_for, flash, request
from flask_sqlalchemy import SQLAlchemy
from flask_wtf.csrf import CSRFProtect
app = Flask(__name__)
CSRFProtect(app)
app.config['SQLALCHEMY_DATABASE_URI'] = "mysql+pymysql://root:123456@127.0.0.1:3306/library2"
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
app.config['SECRET_KEY'] = "jfkdjfkdkjf"
class Author(db.Model):
__tablename__ = 'authors'
id = db.Column(db.Integer,primary_key=True)
name = db.Column(db.String(64),unique=True)
books = db.relationship('Book',backref='author')
class Book(db.Model):
__tablename__ = 'books'
id = db.Column(db.Integer,primary_key=True)
name = db.Column(db.String(64),unique=True)
author_id = db.Column(db.Integer,db.ForeignKey('authors.id'))
@app.route('/add_book', methods=['POST'])
def add_book():
"""
思路分析:
1.获取参数
2.校验参数
3.通过作者名称,查询作者对象
4.判断作者,判断书籍,进行添加
5.重定向展示页
:return:
"""
author_name = request.form.get("author")
book_name = request.form.get("book")
if not all([author_name,book_name]):
return "作者或者书籍为空"
author = Author.query.filter(Author.name == author_name).first()
if author:
book = Book.query.filter(Book.name == book_name, Book.author_id == author.id).first()
if book:
flash('该作者有该书籍')
else:
book = Book(name=book_name, author_id=author.id)
db.session.add(book)
db.session.commit()
else:
author = Author(name=author_name)
db.session.add(author)
db.session.commit()
book = Book(name=book_name, author_id=author.id)
db.session.add(book)
db.session.commit()
return redirect(url_for('show_page'))
@app.route('/delete_book/<int:book_id>')
def delete_book(book_id):
book = Book.query.get(book_id)
db.session.delete(book)
db.session.commit()
return redirect(url_for('show_page'))
@app.route('/delete_author/<int:author_id>')
def delete_author(author_id):
author = Author.query.get(author_id)
for book in author.books:
db.session.delete(book)
db.session.delete(author)
db.session.commit()
return redirect(url_for('show_page'))
if __name__ == '__main__':
app.run(debug=True)