sqlite3异常文档

时间:2018-10-10 22:10:16

标签: python sqlite python-3.6

我想澄清python sqlite3模块中异常的意图。特别是,我看到的异常与docs中的意图不符。

例如,文档说sqlite3.ProgrammingError

  

...因编程错误而引发,例如表未找到或已经存在,SQL语句中的语法错误,指定的参数数量错误等。

但是,在我的计算机上,此代码不会 抛出sqlite3.ProgrammingError

import sqlite3
conn = sqlite3.connect(':memory:')
cursor = conn.cursor()
cursor.execute('CREATE TABLE foo (name TEXT PRIMARY KEY);')
cursor.execute('CREATE TABLE foo (name TEXT PRIMARY KEY);')

它会抛出sqlite3.OperationalError: table foo already exists

类似地,此代码不会在我的计算机上抛出sqlite3.ProgrammingError

import sqlite3
conn = sqlite3.connect(':memory:')
cursor = conn.cursor()
execute('INSERT INTO foo VALUES ("row1");')

相反,它抛出:sqlite3.OperationalError: no such table: foo

这似乎与OperationalError的文档不一致:

  

针对与数据库操作相关且不一定在程序员控制下的错误引发的异常。意外断开连接,找不到数据源名称,无法处理事务,等等。它是DatabaseError的子类。

0 个答案:

没有答案