一尘不染

如何使用pyodbc获取Access数据库特定字段的数据类型?

sql

我正在使用pyodbc在.mbd(访问)文件中对大型数据库进行数据挖掘。

我想创建一个新表,以从几个现有表中获取相关信息(然后将其提供给工具)。

我想我知道我需要传输数据的所有知识,并且我知道如何创建具有列名称和数据类型的表,但是
我在获取现有现有各列的数据类型(INTEGER,VARCHAR等)时遇到了麻烦桌子。 我需要这些类型来兼容地创建新列。

我在互联网(例如thisthis)上发现的内容使我陷入无效命令的麻烦,所以我认为这是特定于平台的问题。再说一次,我对数据库相当满意。

有人知道如何获取这些字段的类型吗?


阅读 121

收藏
2021-03-17

共1个答案

一尘不染

这些文章对您没有帮助的原因是,它们是针对SQL Server的。SQL Server具有可以查询以获取列数据的系统表,而MS Access没有。MS
Access仅允许您查询对象名称。

但是,ODBC确实支持通过ODBC.SQLColumns函数通过其连接获取模式。

根据此答案, PyODBC通过游标方法公开此内容。

# columns in table x
for row in cursor.columns(table='x'):
    print row.column_name

正如Mark在评论中指出的那样,您可能还需要row.data_type。他提供的链接包括其提供的所有列

  1. table_cat
  2. table_schem
  3. table_name
  4. column_name
  5. 数据类型
  6. type_name
  7. column_size
  8. buffer_length
  9. 十进制数字
  10. num_prec_radix
  11. 可为空
  12. 评论
  13. column_def
  14. sql_data_type
  15. sql_datetime_sub
  16. char_octet_length
  17. ordinal_position
  18. is_nullable:SQL_NULLABLE,SQL_NO_NULLS,SQL_NULLS_UNKNOWN之一。
2021-03-17