记录W3C学习Flask遇到的坑
之前一直有记录笔记的习惯只不过一直是默默在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.
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)