1.创建数据库时设置charset
CREATE DATABASE dbname DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
2.Flask MYSQL配置时出错
#报错信息
UserWarning: Neither SQLALCHEMY_DATABASE_URI nor SQLALCHEMY_BINDS is set. Defaulting SQLALCHEMY_DATABASE_URI to "sqlite:///:memory:".
'Neither SQLALCHEMY_DATABASE_URI nor SQLALCHEMY_BINDS is set. '
FSADeprecationWarning: SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and will be disabled by default in the future. Set it to True or False to suppress this warning.
'SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and '
解决方法:
https://blog.youkuaiyun.com/zhongqiushen/article/details/79139346
https://segmentfault.com/q/1010000008767533/a-1020000008769064
https://blog.youkuaiyun.com/weixin_41085315/article/details/79813858
主要就是:
1. db = SQLAlchemy(app) 要在 app.config[ ] 后
2. 没有密码时候直接写成 root:@127.0.0.1:3306
3.逻辑代码
# B站黑马 Flask 实战小项目
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
app = Flask(__name__)
'''
整体实现思路:
1.配置数据库
2.添加模型
3.添加数据
4.使用模板显示数据库查询的数据
# a.查询所有的作者信息,让信息传递给模板
# b.模板中按照格式,依次for循环作者和书籍即可
5.使用WTF显示表单
# a.自定义表单类
# b.模板中显示
# c.secret_key / 编码 / csrf_token
6.使用相关的增删逻辑
# a.增加数据
# b.删除书籍 (网页中删除-点击需要发送书籍的ID给删除书籍的路由-路由需要接收参数)
# c.删除作者
'''
# 第一步 配置数据库
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:@localhost:3306/books'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.secret_key = 'itheima'
db = SQLAlchemy(app)
# 第二步 定义书和作者模型
# 1.作者模型