【问题标题】:Using postgres thru ODBC in python 2.7在 python 2.7 中通过 ODBC 使用 postgres
【发布时间】:2015-05-26 06:56:34
【问题描述】:
  • 我已经安装并启动了 Postgres.app。
  • 我已经 pip 安装了 pypyodbc
  • 我已从 Pypyodbc 文档中复制了 hello world 行,并收到了 下面的错误。有什么想法可能是什么问题?

这是我的代码

  from __future__ import print_function
  import pypyodbc
  import datetime
  conn = pypyodbc.connect("DRIVER={psqlOBDC};SERVER=localhost") 

我收到此错误:

File "/ob/pkg/python/dan27/lib/python2.7/site-packages/pypyodbc.py", line 975, in ctrl_err
  err_list.append((from_buffer_u(state), from_buffer_u(Message), NativeError.value))
File "/ob/pkg/python/dan27/lib/python2.7/site-packages/pypyodbc.py", line 482, in UCS_dec
  uchar = buffer.raw[i:i + ucs_length].decode(odbc_decoding)
File "/ob/pkg/python/dan27/lib/python2.7/encodings/utf_32.py", line 11, in decode
  return codecs.utf_32_decode(input, errors, True)
UnicodeDecodeError: 'utf32' codec can't decode bytes in position 0-1:   truncated data

我做错了什么?

我需要先以某种方式初始化数据库/表吗?如果这是问题,那就是一个奇怪的错误。

【问题讨论】:

  • Postgres.app 实际上是否包含 ODBC 驱动程序?快速浏览一下它的home page 似乎表明它没有。
  • 戈德,没有问题。在我的 Fedora 上,我使用了yum install postgresql-odbc,它安装了 unixodbc 和其他必需的软件包。对于 Windows,有单独的安装程序。我使用他们的 ODBC 驱动程序,我认为它是我所知道的最好的 ODBC 驱动程序之一(当 PostgreSQL 正常工作时,我在使用 Oracle 和 Informix 驱动程序时遇到了一些问题)。
  • 我认为 ODBC 驱动程序安装正确,但 ConnectString 有问题。
  • @MichałNiklas 您的测试可能无法准确反映提问者工作的环境。据我所知,Postgres.app 是一个独立的 Mac 应用程序,无需实际安装即可提供 PostgreSQL 服务器PostgreSQL。可以想象,在 Linux(或 Windows)下使用完整的 PostgreSQL 安装(以及显式安装的 PostgreSQL ODBC 驱动程序)进行测试的行为可能完全不同。
  • @MichałNiklas 确实你是对的。我使用了 Postgres 本身的独立安装程序。然后我 pip 安装了 postgresql-odbc。这应该可行,但我可以看到非 odbc Postgres 驱动程序是大多数社区花费精力的地方,所以我放弃了 odbc 路径。 (如果有人真的在 OSX 环境中解决了这个问题,我会为更大的社区知识选择那个答案。)谢谢大家!

标签: python postgresql odbc pypyodbc postgresapp


【解决方案1】:

我在我的 Fedora 机器上复制了你的代码,当我将连接字符串更改为类似以下内容时它开始了:

conn = pypyodbc.connect("Driver={PostgreSQL};Server=IP address;Port=5432;Database=myDataBase;Uid=myUsername;Pwd=myPassword;")

您可以在以下位置找到更多 PostgreSQL 和 ODBC 连接字符串:https://connectionstrings.com/postgresql-odbc-driver-psqlodbc/

【讨论】:

  • 你好,我如何找到适用于 macos 的 postgresql 驱动程序
猜你喜欢
  • 2022-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-31
  • 2011-04-07
  • 2014-12-20
相关资源
最近更新 更多