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