首页 > 解决方案 > 与通过 psycopg2 创建的 postgreSQL 数据库的连接失败

问题描述

我用这样的 for 循环创建了一堆数据库:

import os
import psycopg2
from psycopg2.extensions import ISOLATION_LEVEL_AUTOCOMMIT

con = psycopg2.connect("user = my_user password = my_password");
con.set_isolation_level(ISOLATION_LEVEL_AUTOCOMMIT);

for txt in list_txt:
    cursor = con.cursor();
    sqlCreateDatabase = "create database " + txt + ";"
    cursor.execute(sqlCreateDatabase);
    cursor.close()
    con.commit()

显然它工作正常,因为数据库显示在 pgAdmin 服务器树中。之后,当我尝试访问通过以下方式创建的数据库时,连接失败:

db_name = "my_DB"
con_data = "host = localhost dbname = " + db_name + " user = my_user password = my_password"
con = psycopg2.connect(con_data);
cursor = con.cursor();

连接失败,产生以下 OperationalError:

OperationalError                          Traceback (most recent call last)
<ipython-input-39-a5dcf00c1db0> in <module>
      1 db_name = "my_DB"
      2 con_data = "host = localhost dbname = " + db_name + " user = my_user password = my_password"
----> 3 con = psycopg2.connect(con_data);
      4 cursor = con.cursor();

~\miniconda3\envs\psyco\lib\site-packages\psycopg2\__init__.py in connect(dsn, connection_factory, cursor_factory, **kwargs)
    125 
    126     dsn = _ext.make_dsn(dsn, **kwargs)
--> 127     conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
    128     if cursor_factory is not None:
    129         conn.cursor_factory = cursor_factory

OperationalError:

如何在不手动创建新数据库的情况下访问我的新数据库?提前致谢!

标签: pythonpostgresqlpsycopg2

解决方案


推荐阅读