我正在尝试建立与这样的数据库的连接:
psycopg2.connect(database="movies", user="lfcj", host="127.0.0.1");
我的 pg_hba.conf 文件有一行:

类型__数据库___用户__地址___方法local all lfcj peer
我正在尝试使用对等标识,我的 SO 用户名也是 lfcj

当我像这样登录 postgresql 时,将所有权限授予 lfcj ,然后运行 ​​\list :

psql lfcj -h 127.0.0.1 -d movies
Enter password:  'myPassword'

psql (9.4.1)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help.

movies=# GRANT ALL PRIVILEGES ON DATABASE  movies TO lfcj WITH GRANT OPTION;
movies=#\list

我得到这个信息:
                            List of databases
Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
--------+----------+----------+-------------+-------------+-----------------------
movies  | lfcj     | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =Tc/lfcj         +
        |          |          |             |             | lfcj=C*T*c*/lfcj+

所以:数据库 movies 存在,lfcj 是所有者并且拥有所有权限。但是当我运行时:
psycopg2.connect(movies, lfcj);
它抛出一个错误:
File "/usr/lib/python2.7/dist-packages/psycopg2/__init__.py", line 179, in connect
connection_factory=connection_factory, async=async)
psycopg2.OperationalError: FATAL:  database "movies" does not exist

有任何想法吗?

最佳答案

您的连接字符串应如下所示:

psycopg2.connect("dbname=test user=postgres password=secret")

connect 方法将为您提供一个到数据库的连接,因此您可能需要将它存储在一个变量中。通常是这样的:
conn = psycopg2.connect("dbname=test user=postgres password=secret")

您还可以使用一组这样的关键字:
conn = psycopg2.connect(database="test", user="postgres", password="secret")

关于python - Postgresql & psycopg2 : database does not exist,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31055166/

10-11 15:21