项目需求:实现书籍、作者的增加、删改。
工具
pycharm
mysql
项目步骤(重要)
1、配置数据库
a.导入SQLAlchemy拓展
b.创建db对象,并在其前面配置参数
c.mysql创建数据库
2、添加书和作者的模型
a.作者 id name 书 id name 作者写多本书,因此书有一外键与作者相连author_id(多)
b.模型继承 db.Model __tablename__定义表名 db.Column字段
c.加上关系引用db.relationship,便于一次查询出结果author参数 books参数
d.加上外键,建立二表间关联
3、添加数据
4、使用模板显示数据库查询的数据
a.查询所有的作者信息 让信息传递给模板
b.模板中按照格式进行两次for循环:作者 作者模型中的关系引用
5、实例WTF显示表单
a.自定义表单类
b.模板中显示
c.secret_key:解决编码问题 csrf_token:
6、实现相关的增删逻辑
a.增加数据
b.删除书籍-》网页中删除-》点击需要发送书籍的ID给删除书籍的路由
url_for的使用 for else 的使用 redirect的使用
c.删除作者
全删掉书籍后,再删除作者
代码
包
# -*- coding = utf-8 -*-
# @Time:2021/12/27 16:42
# @Author:韩彩琴
from flask import Flask,render_template,flash,request,redirect,url_for
from flask_sqlalchemy import SQLAlchemy
# 自定义表单类
from flask_wtf import FlaskForm
# 自定义表单类的样式
from wtforms import StringField,SubmitField
# 自定义表单类的验证
from wtforms.validators import DataRequired
# 连接Mysql数据库
import pymysql
pymysql.install_as_MySQLdb()
# 解决中文编码的问题
import importlib,sys
importlib.reload(sys)
# 创建flask对象
app = Flask(__name__)
# 配置数据库:数据库地址 关闭自动跟踪修改
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:root@127.0.0.1/flask_books'
# 自动更新修改(未来被废弃)
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
# 增加密钥
app.secret_key = 'itheima'
# 创建数据库对象
db = SQLAlchemy(app)
定义作者和书模型
# 定义作者和书模型
class Author(db.Model):
# 表名
__tablename__ = 'authors'
# 字段
id = db.Column(db.Integer,primary_key=True)
name = db.Column(db.String(15),unique=True)
# 关系引用 books是给自己Author模型用的,author是给Book模型用的
books = db.relationship('Book',backref='author')
# 打印
def __repr__(self):
return 'Author:%s'%self.name
# 书籍模型
class Book(db.Model):
# 表名
__tablename__ =