Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在sqlite中检测行类型与列类型不匹配的情况?_Python_Sql_Sqlite - Fatal编程技术网

Python 如何在sqlite中检测行类型与列类型不匹配的情况?

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()的调用不会引发任何错误 检测行数据

使用Python的
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)