当前位置: 首页 > 面试题库 >

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

佟颖逸
2023-03-14
问题内容

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

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

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

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

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


问题答案:

这些文章对您没有帮助的原因是因为它们是针对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之一。


 类似资料:
  • 我是android和Room Persistence library的新手,我将数据保存在一个名为的实体中,它有很多行,其中一个是PrimaryKey cadID(一个int字段)。我需要从用户刚刚输入的最后一个条目中获取cadID。 对于这个问题,我试图使用以下逻辑来获得它: 但是,当程序到达这一点时,它抛出一个NullPointerException异常: 这就是我在ViewModel(Vie

  • 问题内容: 我正在研究Firebase项目,我在其中将用户信息存储在表中。现在,我的要求是在表中显示所有用户。这是我的数据库快照 我可以使用从数据库中获取所有用户 上面的代码向我返回了包含bod,电子邮件,姓名,性别的用户数组。但是我只想获取电子邮件和用户名。 有没有一种方法只能从数据库中获取指定的字段? 问题答案: 读取节点时,必须检索其全部内容。因此,无法从读取路径时返回的数据中仅获取 特定

  • 问题内容: 我将数据保存在SQLite数据库中。我将日期保存为DATETIME数据类型在数据库中。 我只想从我的SQLite数据库中检索特定月份的数据。 我尝试使用下面的查询来检索数据,但是它没有用。它给了我数据,但不是特定月份。 问题答案: 这可能不是最佳选择,但您可以使用:

  • 问题内容: 当我尝试使用时会发生异常: 也不显示主键。 问题答案: 对于Access ODBC,我们可以通过pyodbc对象的方法获取“主键”列:

  • 问题内容: 我有一个MS-Access数据库,我正在使用JDBC(我认为是JDBC-ODBC桥)在Java中连接到该数据库。我的访问数据库有一些希伯来语值。 当我尝试使用String str = rs.getString(1)(rs是RowSet)读取这些值时,我得到的字符串只是一个问号字符串。 我还有希伯来语中的其他字符串,这些字符串是我在Java代码中使用字符串文字设置的,它们可以正常工作。所

  • 问题内容: 我需要查看c#程序使用的Access数据库中是否存在表。已知有用于其他数据库的SQL命令将返回表列表。Access / Jet数据库是否有这样的命令? 问题答案: 尝试GetSchema()