pyodbc 为 MS Access 双/单字段返回额外的小数位

问题描述

当我使用 pyodbc 从访问数据库获取数据时,它返回浮点数、日期或整数的错误格式。

例如:

这些值

enter image description here

像这样返回

enter image description here

我找了很久,我觉得是用的 ODBC Driver 引起的,但真的,我不知道。

一个示例是我的 MS Access DB 中 DATE 类型的“21/01/2021”之类的日期,将作为日期时间以中文或韩文格式 YYYY-mm-dd H:m:s 返回。>

解决方法

如果表中的字段定义使用默认格式选项,浮点列(Numeric(Double)Numeric(Single))将在 Access UI 中显示所有小数位

格式:(空)
小数位:自动

将这些设置更改为

格式:固定
小数位:2

将更改 Access UI 中的显示格式,但数字本身仍将以其完全精度存储。 ODBC 驱动程序不注意这些格式属性,因此它返回带有所有可用小数位的值。

对于日期/时间值,如果时间组件正好是午夜,则 Access UI 中的默认格式是只显示日期。但是,日期/时间值与该时间组件 (00:00:00) 一起存储,并且 ODBC 驱动程序再次返回完整值。有关更详细的说明,请参阅 this answer