5

在 python 中使用 sqlite3 模块时,除列名之外的所有 cursor.description 元素都设置为 None,因此该元组不能用于查找查询结果的列类型(与其他 DB-API 兼容模块不同)。获取用于获取表描述的列类型pragma table_info(table_name).fetchall(),将其存储在内存中,然后将 cursor.description 中的列名与整个表描述匹配的唯一方法是吗?

4

2 回答 2

5

不,这不是唯一的方法。或者,您也可以获取一行,对其进行迭代,然后检查各个列 Python 对象和类型。除非该值为 None(在这种情况下 SQL 字段为 NULL),否则这应该为您提供相当精确的指示数据库列类型是什么。

sqlite3 只在一个地方使用sqlite3_column_decltypesqlite3_column_type,每个地方都不能被 Python 应用程序访问——所以它们不是你可能一直在寻找的“直接”方式。

于 2009-10-17T22:29:59.600 回答
1

我没有在 Python 中尝试过,但你可以尝试类似的东西

SELECT *
FROM sqlite_master
WHERE type = 'table';

其中包含用于创建表的 DDL CREATE 语句。通过解析 DDL,您可以获得列类型信息,例如它。请记住,当涉及到列数据类型时,SQLITE 相当模糊且不受限制。

于 2009-10-18T22:12:46.947 回答