示例 1 要插的四行
王天一、苏红霞、林勇、李玉,学号 s9 到 s12。

重 点
这张表是标准答案,后面代码里的值要跟它对得上。
知道更多
课件第 48、49 页把 s12 写成物联网、信息学院,与这张表和第 50 页都不一样。
想一想
四条 INSERT,中间有一条失败该怎么办?
王天一、苏红霞、林勇、李玉,学号 s9 到 s12。

这张表是标准答案,后面代码里的值要跟它对得上。
课件第 48、49 页把 s12 写成物联网、信息学院,与这张表和第 50 页都不一样。
四条 INSERT,中间有一条失败该怎么办?
第一行 import 印成了大写,close 缩进在 except 里。

| 这一刻去查 | 自己这条连接 | 另开一条连接 |
|---|
课件第一行印的是 Import,大写 I 不是关键字,照抄是 SyntaxError。
db.close() 缩进在 except 里,四条都成功时反而不关连接。
把 commit 挪到 try 外面会怎样?
先把 SQL 存进变量,再交给 execute,效果一样。

这一版把表名写成了大写 S,Linux 上的 MySQL 认大小写,会报 1146。
sql4 的年龄写成 22,第 47 页和第 50 页的表里都是 21。
Windows 上照抄这一版会不会报错?
十二行,s9 到 s12 都在里面。

课件那句注意说的是:再跑一遍不报错,也插不进去。
原因是 except 后面只有 rollback 没有 print,1062 被整个吞掉了。
怎么改一个地方就能让它把错说出来?
DELETE 也是改数据,一样要 commit。

课件这一页的标题写的是改专业,代码却是 DELETE,标题串了。
文件名这里叫 delete_s_05.py,下一页又说是 delete_s_04.py,两处对不上。
删一个本来就不存在的学号,会报错吗?
十一行,s12 那一行没了。

一行都没删掉时 rowcount 是 0,一个错也不报,得自己看这个数。
语句写错会抛异常,rowcount 是 0 只说明 WHERE 一行也没匹配上。
rowcount 是 0,该当成成功还是失败?
这一页的 sql 那一行少了一个右引号。

少一个右引号,照抄是 SyntaxError,还没连数据库就被拦下了。
命中一行但值没变时,rowcount 给的是 0,跟第 16 章那句 Changed 是同一个数。
命中了却没改动,算改成功了吗?