【问题标题】:sqlite3 and cursor.descriptionsqlite3 和 cursor.description
【发布时间】:2009-10-19 06:12:46
【问题描述】:

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

【问题讨论】:

    标签: python sqlite python-db-api


    【解决方案1】:

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

    sqlite3 只在一个地方使用sqlite3_column_decltypesqlite3_column_type,Python 应用程序都无法访问它们——因此它们不是您可能一直在寻找的“直接”方式。

    【讨论】:

      【解决方案2】:

      我没有在 Python 中尝试过,但您可以尝试类似的方法

      SELECT *
      FROM sqlite_master
      WHERE type = 'table';
      

      其中包含用于创建表的 DDL CREATE 语句。通过解析 DDL,您可以获得列类型信息,例如。请记住,在列数据类型方面,SQLITE 相当模糊且没有限制。

      【讨论】:

        猜你喜欢
        • 2021-03-05
        • 1970-01-01
        • 2011-01-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多