在Python2.7中通过ODBC使用postgres 我已经安装并启动了Postgres.app 我已经安装了pip 我已经从pyodbc文档中复制了helloworld行,并收到了 下面的错误。你知道问题是什么吗

在Python2.7中通过ODBC使用postgres 我已经安装并启动了Postgres.app 我已经安装了pip 我已经从pyodbc文档中复制了helloworld行,并收到了 下面的错误。你知道问题是什么吗,python,postgresql,odbc,pypyodbc,postgresapp,Python,Postgresql,Odbc,Pypyodbc,Postgresapp,这是我的密码 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

这是我的密码

  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
我做错了什么


我需要先初始化DB/表吗?如果这就是问题所在,那就是一个奇怪的错误。

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

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

您可以在以下位置找到PostgreSQL和ODBC的更多连接字符串:

Postgres.app是否实际包含ODBC驱动程序?快速查看一下它似乎表明它没有。哥德,没有问题。在我的Fedora上,我使用了
yum安装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本身的独立安装程序。然后我安装了postgresql odbc。这应该是可行的,但我可以看到非odbc Postgres驱动程序是社区中大多数人花费精力的地方,所以我放弃了odbc路径。(如果有人真的在OSX环境中解决了这个问题,我会选择这个答案,以获取更广泛的社区知识。)谢谢大家!