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

Emi*_*har 0 python sql ms-access pyodbc

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

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

我想我知道所有我需要传输数据,并且我知道如何创建一个给定列名和数据类型的表,但是我无法获得现有列中相应列的数据类型(INTEGER,VARCHAR等)表.我需要这些类型来兼容地创建新列.

我在互联网上找到的东西(比如这个这个)让我陷入无效命令的麻烦,所以我认为这是一个特定于平台的问题.然后,我在数据库上相当绿色.

有谁知道如何获得这些领域的类型?

Con*_*rix 5

这些文章没有帮助你的原因是因为它们适用于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 
Run Code Online (Sandbox Code Playgroud)

正如Mark在评论中指出的那样,你可能也想要row.data_type.他提供的链接包括它提供的所有列

  1. TABLE_CAT
  2. TABLE_SCHEM
  3. TABLE_NAME
  4. 列名
  5. 数据类型
  6. TYPE_NAME
  7. COLUMN_SIZE
  8. BUFFER_LENGTH
  9. DECIMAL_DIGITS
  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之一.