我正在尝试连接到 Postgres 中的数据库以将数据插入到我的表中。 来自 Jupyter 笔记本。我正在使用这些命令
连接到数据库
#url = postgresql+psycopg2://postgres@localhost:5432/citibike'
from sqlalchemy import create_engine
engine = create_engine('postgresql://localhost/citibike')
con = engine.connect()
df_date.to_sql('date_dim', con, if_exists='append',index=False,chunksize=10000)
stations.to_sql('stations', con, if_exists='append',index=False,chunksize=10000)
trip_demo.to_sql('trip_demo', con, if_exists='append',index=False,chunksize=10000)
df_weather.to_sql('weather', con, if_exists='append',index=False,chunksize=10000)
rides.to_sql('rides', con, if_exists='append',index=False,chunksize=10000)
con.close()`
但是当我尝试运行代码时,我收到此错误
操作错误:(psycopg2.OperationalError) 连接到“localhost”(::1) 处的服务器,端口 5432 失败:致命:角色“rkb18”不存在
我已检查我的登录详细信息以及主机、数据库的所有详细信息、用户名、端口等都是正确的。
rkb18 是我笔记本电脑上 Windows 层次结构中的用户名,但我不确定这与我在这里尝试执行的操作有何关系。
我使用 postbird 作为我的与 postgres 的接口 任何帮助/建议将不胜感激。
根据你提供的错误信息,看来问题不在于你的 Python 代码,而在于你的 PostgreSQL 设置:
“致命:角色“rkb18”不存在” 意味着 PostgreSQL 服务器正在尝试使用名为 “rkb18” 的角色进行身份验证,但该角色不存在于你的数据库中。
以下是一些可能的原因和解决方案:
- 你在连接字符串中没有指定用户名和密码:
-
确保在连接字符串中包含用户名和密码。例如:
python engine = create_engine('postgresql://用户名:密码@localhost/citibike')
-
将
用户名
和密码
替换为你的 PostgreSQL 用户名和密码。 -
你使用的是错误的数据库用户:
-
确认你在连接字符串中使用的用户名(如果你提供了)具有访问
citibike
数据库的权限。 -
Postbird 使用的用户名可能与你在 Jupyter Notebook 中尝试使用的用户名不同。在 Postbird 中检查你的连接设置以确认用户名。
-
“rkb18” 用户不存在或没有正确的权限:
-
如果你确定要使用 “rkb18” 用户,则需要在 PostgreSQL 中创建它并授予其访问
citibike
数据库的权限。 -
你可以使用
Postbird
或
psql
命令行工具来完成此操作。
以下是一些使用
psql
创建用户并授予权限的示例命令:
```sql -- 使用 postgres 用户连接到数据库 psql -U postgres
-- 创建新用户 CREATE USER rkb18 WITH PASSWORD '密码';
-- 授予用户对 citibike 数据库的访问权限 GRANT ALL PRIVILEGES ON DATABASE citibike TO rkb18; ```
请务必将
密码
替换为安全的密码。
完成这些步骤后,请尝试再次运行你的 Python 代码。 如果问题仍然存在,请提供更多上下文信息,例如:
- 你正在使用的 PostgreSQL 版本。
- 你如何安装 PostgreSQL(例如,通过 Docker、软件包管理器等)。
-
你是否可以从其他应用程序(例如
psql
)连接到数据库?
这将有助于我更准确地诊断问题。
标签:python,postgresql,jupyter-notebook From: 78805825