Psycopg2:'module' 对象没有属性 'connect'

Psycopg2: 'module' object has no attribute 'connect'

我正在尝试使用 psycopg2 连接到 postgres 数据库:

import psycopg2

try:
    conn = psycopg2.connect("dbname='puppetdb' user='puppetdb' host='172.17.0.1' port='5432' password='puppetdb'")
except Exception, e:
    print "I am unable to connect to the database"
    print e

哪个returns:

I am unable to connect to the database
'module' object has no attribute 'connect'

我已经确保 psycopg2 与 pip install psycopg2 一起安装,看起来这应该根据 documentation.

工作

我做错了吗?

这可能是一个名称隐藏问题。

如果您的文件名为 psycopg2.py 或者如果您在该目录中有一个 psycopg2.py/psycopg2.pyc 文件,那么它将在实际的 pyscopg2 模块上导入您的脚本。

如果这是问题所在,请将您的文件重命名为其他名称。

对我来说,这是因为我正在将一个 zip 文件上传到 AWS lambda 而不是递归地压缩文件夹,即 zip lambda.zip * 而不是 zip -r lambda.zip *。所以模块文件夹是空的。

import psycopg2               # Acc�s PostgreSQL
import psycopg2.extras        # Goodies PostgreSQL

try:
     conn = psycopg2.connect("dbname='puppetdb' user='puppetdb' 
host='172.17.0.1' port='5432' password='puppetdb'")

except psycopg2.Error as e:
    print("I am unable to connect to the database")
    print(e)