Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.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 如何使用pyodbc获取Access数据库特定字段的数据类型?_Python_Sql_Ms Access_Pyodbc - Fatal编程技术网

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

Python 如何使用pyodbc获取Access数据库特定字段的数据类型?,python,sql,ms-access,pyodbc,Python,Sql,Ms Access,Pyodbc,我正在使用pyodbc对.mbd access文件中的大型数据库进行数据挖掘 我想创建一个新表,从几个现有表中获取相关信息,然后将其提供给工具 我想我知道传输数据所需的一切,我知道如何在给定列名和数据类型的情况下创建一个表,但在获取现有表中各个列的数据类型INTEGER、VARCHAR等时遇到了困难。我需要这些类型来创建兼容的新列 我在互联网上发现的类似于和正在让我陷入无效命令的麻烦,所以我认为这是一个特定于平台的问题。再说一次,我对数据库相当熟悉 有人知道如何获取这些字段的类型吗?我不熟悉py

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

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

我想我知道传输数据所需的一切,我知道如何在给定列名和数据类型的情况下创建一个表,但在获取现有表中各个列的数据类型INTEGER、VARCHAR等时遇到了困难。我需要这些类型来创建兼容的新列

我在互联网上发现的类似于和正在让我陷入无效命令的麻烦,所以我认为这是一个特定于平台的问题。再说一次,我对数据库相当熟悉


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

我不熟悉pyodbc,但我以前在VBA中做过

您提到的两个链接是用于SQL Server的,不是用于访问的。要找出访问表中每个字段的数据类型,可以使用DAO或ADOX

下面是我在VBA with Excel 2010中所做的一个示例,其中我连接到Access database 2000 mdb格式,并以枚举形式列出表、字段及其数据类型,例如“4”表示dbLong。您可以在输出中看到系统表,在底部可以看到用户创建的表。 你们可以很容易地在互联网上找到关于如何使用ADOX做类似事情的例子。我希望这有帮助

Private Sub TableDefDao()
    Dim db As DAO.Database
    Set db = DAO.OpenDatabase("C:\Database.mdb")

    Dim t As DAO.TableDef
    Dim f As DAO.Field
    For Each t In db.TableDefs
        Debug.Print t.Name
        For Each f In t.Fields
            Debug.Print vbTab & f.Name & vbTab & f.Type
        Next
    Next
End Sub

我不熟悉pyodbc,但我以前在VBA中做过

您提到的两个链接是用于SQL Server的,不是用于访问的。要找出访问表中每个字段的数据类型,可以使用DAO或ADOX

下面是我在VBA with Excel 2010中所做的一个示例,其中我连接到Access database 2000 mdb格式,并以枚举形式列出表、字段及其数据类型,例如“4”表示dbLong。您可以在输出中看到系统表,在底部可以看到用户创建的表。 你们可以很容易地在互联网上找到关于如何使用ADOX做类似事情的例子。我希望这有帮助

Private Sub TableDefDao()
    Dim db As DAO.Database
    Set db = DAO.OpenDatabase("C:\Database.mdb")

    Dim t As DAO.TableDef
    Dim f As DAO.Field
    For Each t In db.TableDefs
        Debug.Print t.Name
        For Each f In t.Fields
            Debug.Print vbTab & f.Name & vbTab & f.Type
        Next
    Next
End Sub

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

但是,ODBC支持通过其通过的连接获取架构

根据PyODBC,它通过游标方法公开了这一点

# columns in table x
for row in cursor.columns(table='x'):
    print row.column_name 
正如Mark在注释中指出的,您可能还需要row.data\u类型。他提供的列表包括它提供的所有列

餐桌猫 表2.1.1-1 表名称 列名 数据类型 键入您的姓名 列大小 缓冲区长度 十进制数字 基数 可空 评论 列定义 sql\u数据类型 sql\u datetime\u sub 字符八位字节长度 序数位置 is_nullable:SQL_nullable、SQL_NO_NULLS、SQL_NULLS_UNKNOWN中的一个。
这些文章之所以没有帮助您,是因为它们是针对SQL Server的。SQL Server有可以查询以获取列数据的系统表,MS Access没有。MS Access仅允许查询对象名称

但是,ODBC支持通过其通过的连接获取架构

根据PyODBC,它通过游标方法公开了这一点

# columns in table x
for row in cursor.columns(table='x'):
    print row.column_name 
正如Mark在注释中指出的,您可能还需要row.data\u类型。他提供的列表包括它提供的所有列

餐桌猫 表2.1.1-1 表名称 列名 数据类型 键入您的姓名 列大小 缓冲区长度 十进制数字 基数 可空 评论 列定义 sql\u数据类型 sql\u datetime\u sub 字符八位字节长度 序数位置 is_nullable:SQL_nullable、SQL_NO_NULLS、SQL_NULLS_UNKNOWN中的一个。
要获取列的数据类型,请查看row.data\u type而不是row.column\u name。有关所有列属性,请参见此处:要获取列的数据类型,请查看row.data\u type,而不是row.column\u name。有关所有列属性,请参见此处: