【问题标题】:Select time query issue in python pyodbc在 python pyodbc 中选择时间查询问题
【发布时间】:2023-03-23 19:43:01
【问题描述】:

我正在通过 python pyodbc 查询具有时间列(dataType is time)的表。该列的值为17:12:40,但在选择此时间列时通过pyodbc,它返回datetime.time(0, 0) 值。

示例:查询是:

Select arrivalTime from myTable where id =1

arrivalTime 的数据库中的实际值是 17:12:40,但 pyodbc 返回值 datetime.time(0, 0) 这实际上相当于空值。

在 sql 接口中执行相同的查询返回正确的值。甚至 SqlAlchemy 也在正确执行它。只有 pyodbc 返回不正确的值。

仅当我通过 pyodbc 连接到 mySql 数据库时才会出现此问题。 mySql DSN 是否存在任何 pyodbc 依赖关系?

这是一个已知问题吗?

【问题讨论】:

  • “这是一个已知问题吗?” - 显然不是,因为我无法在 Python 2.7.5 或 Python 3.4.3 下使用 MySQL ODBC 5.2w 和当前版本的 pyodbc。我按预期得到datetime.time(17, 12, 40)。如果您使用的是旧版本的 pyodbc,请将其更新到最新版本并重试。如果问题仍然存在,请edit您的问题,提供有关您正在使用的组件版本的更多详细信息。

标签: python mysql pyodbc


【解决方案1】:

确保您在整个堆栈中使用 TDS 7.3 版:

  • 在您的连接字符串中;
  • 在 odbc.ini 中;
  • 在 FreeTDS.conf 中。

请看这里:http://www.freetds.org/userguide/choosingtdsprotocol.htm

如果您在连接字符串中使用的是 8.0 版,这是不正确的;它映射为 7.1 版。只有 TDS 7.3 版支持 SQL Server 2008 中引入的 DATE 和 TIME 数据类型。

祝你好运!

【讨论】:

  • 显然问题涉及 MySQL,而不是 MS SQL Server。
  • 啊,谢谢,当我已经想到 FreeTDS 时,我总是将 MySQL 解析为 MSSQL。 :)
猜你喜欢
  • 1970-01-01
  • 2012-12-25
  • 1970-01-01
  • 2018-02-09
  • 2020-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多