Python 如何在sqlite中检测行类型与列类型不匹配的情况?
使用Python的Python 如何在sqlite中检测行类型与列类型不匹配的情况?,python,sql,sqlite,Python,Sql,Sqlite,使用Python的sqlite模块,我在数据库中声明了一列数据的类型为real,但是由于源数据中的错误,一些行的类型为text。这很好,但是当我提取数据时,如果声明的列类型为real时,行包含text类型的数据,我希望sqlite抛出一个错误。我该怎么做 我已尝试使用打开数据库连接 con = sqlite3.connect('mydatabase.db',detect_types=sqlite3.PARSE_DECLTYPES) 但是,对fetchone()的调用不会引发任何错误 检测行数据
sqlite
模块,我在数据库中声明了一列数据的类型为real
,但是由于源数据中的错误,一些行的类型为text
。这很好,但是当我提取数据时,如果声明的列类型为real
时,行包含text
类型的数据,我希望sqlite抛出一个错误。我该怎么做
我已尝试使用打开数据库连接
con = sqlite3.connect('mydatabase.db',detect_types=sqlite3.PARSE_DECLTYPES)
但是,对fetchone()
的调用不会引发任何错误
检测行数据类型和为列声明的数据类型之间的差异的最佳方法是什么
我也考虑过在插入数据库之前清理数据,但是这些异常的
文本
行包含将来可能更相关的特殊代码。当您使用detect\u types=sqlite3.PARSE\u DECLTYPES
时,您实际上需要为声明的类型注册一个转换器(或用于插入的适配器),默认情况下注册的转换器仅适用于DATE
和DATETIME
如果您希望在声明为real
的列不是数字时出现错误,那么它将非常简单:
sqlite3.register_converter('real', float)