记录W3C学习Flask遇到的坑

记录W3C学习Flask遇到的坑

    • raise Exception("Install 'email_validator' for email validation support.")
    • pymysql.err.InternalError: (1054, “Unknown column ‘name’ in ‘field list’”)
    • MYSQL最新版本的GROUP BY

之前一直有记录笔记的习惯只不过一直是默默在word里写,后面文件丢了很多次,或者被云存档覆盖认识到了在线博客的重要性。
W3C教程可能没人维护了,源代码有些现在直接运行会报错。

raise Exception(“Install ‘email_validator’ for email validation support.”)

W3C出问题的教程地址
直接运行代码会报下面的错误

raise Exception("Install 'email_validator' for email validation support.")
Exception: Install 'email_validator' for email validation support.

这个错误提示很有误导性,以为是缺少安装email_validator,实际上是安装了的。
我在Stack OverFlow中找到了遇到类似问题的情况。

Stack_OverFlow
在这里插入图片描述
回退WTForms到指定版本。

pymysql.err.InternalError: (1054, “Unknown column ‘name’ in ‘field list’”)

pymysql.err.InternalError: (1054, “Unknown column ‘name’ in ‘field list’”)

这个问题是在commit()提交时出现的,看起来好像是找不到数据包的name这一项,实际上是提交失败!
因为Unique这里表明了不能出现重复,注意数据库的添加是不会覆盖的,如果有重名的直接会增加一行新的,所以我这次修改代码不断重复提交,第二次就会出问题。
要么执行前删除表,要么取消unique.
记录W3C学习Flask遇到的坑_第1张图片

MYSQL最新版本的GROUP BY

W3C教程是用sqlite数据库,我这里用的MYSQL。注意MYSQL最新版用group_by会有个问题
MYSQL最新版的GROUP BY强制要求使用
only_full_group_by
意思就是,例如:

`SELECT id,score FROM Score GROUP_BY id Having cout(score > 3)`

这个常见的成绩表,一个人也就是一个id往往会对应多个成绩,通过GROUP_BY可以将每个人分组,选出那些有三个以上分数的人。但这里select了id与score,而group by只有id,这个模式下就不合法,根据要求现在必须要GROUP_BY出现什么,前面SELECT才能选取什么。如果SELECT出现非GROUP_BY后面的内容,必须是聚合函数的参数:
例如

SELECT id,sum(score) FROM Score GROUP_BY id Having cout(score >3)

你可能感兴趣的:(python后端,python,mysql,flask,后端)