首页 > 编程问答 >无法使用 Psycopg2 从 jupyter Notebook 连接到 Postgres 数据库

无法使用 Psycopg2 从 jupyter Notebook 连接到 Postgres 数据库

时间:2024-07-29 15:38:22浏览次数:8  
标签:python postgresql jupyter-notebook

我正在尝试连接到 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” 的角色进行身份验证,但该角色不存在于你的数据库中。

以下是一些可能的原因和解决方案:

  1. 你在连接字符串中没有指定用户名和密码:
  2. 确保在连接字符串中包含用户名和密码。例如: python engine = create_engine('postgresql://用户名:密码@localhost/citibike')
  3. 用户名 密码 替换为你的 PostgreSQL 用户名和密码。

  4. 你使用的是错误的数据库用户:

  5. 确认你在连接字符串中使用的用户名(如果你提供了)具有访问 citibike 数据库的权限。
  6. Postbird 使用的用户名可能与你在 Jupyter Notebook 中尝试使用的用户名不同。在 Postbird 中检查你的连接设置以确认用户名。

  7. “rkb18” 用户不存在或没有正确的权限:

  8. 如果你确定要使用 “rkb18” 用户,则需要在 PostgreSQL 中创建它并授予其访问 citibike 数据库的权限。
  9. 你可以使用 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

相关文章

  • 如何使用Python AST给表达式a == b添加括号?
    请问,有谁知道如何使用PythonAST在代码中为a==b这样的表达式添加括号?我尝试过重写visit_Compare,但是ast.unparse中的delimit_if自动删除了我添加的括号,因为优先级a==b的值更高。你说的对,直接使用ast.unparse会因为优先级问题导致添加的括号被移除。为了解......
  • 使用 powershell 或 python 从网页列出公司名称
    我希望使用PowerShell或python仅列出URL中的公司名称:https://www.moneycontrol.com/markets/earnings/results-calendar/?activeDate=2024-07-29下面是我的python脚本用于获取网页的结构:importrequestsfrombs4importBeautifulSoup#URLo......
  • T3/A40i支持Linux-5.10新内核啦,Docker、Qt、Python统统升级!
    自2021年创龙科技推出全志国产化率100%的T3/A40i工业核心板后,不到两年时间已超过800家工业客户选择创龙科技T3/A40i平台。随着客户产品的不断升级与迭代,部分“能源电力”、“工业自动化”行业客户对T3/A40i的Linux版本提出了更高要求,主要涉及Docker、Qt、Python等组件特性。秉持......
  • 使用 Python 中的多处理防止共享内存中的数据损坏?
    我目前正在开发一个多处理Python程序,其中每个进程将其索引作为连续的4字节整数写入共享内存。并且有一个读取器可以在没有任何锁的情况下读取其他进程的索引。因为我没有使用任何同步原语,所以我担心读取器进程可能会由于逐字节写入内存而读取损坏的数据(例如,一个索引的前2个......
  • Python如何统治AI世界?一文读懂它的优势与挑战
    一、Python语言介绍1.1Python语言概述Python是一种由GuidovanRossum于1991年首次发布的高级编程语言。其设计理念强调代码的可读性和简洁性,使其成为了许多开发者的首选语言。Python的语法简洁直观,采用了缩进来定义代码块,这与其他使用花括号或关键词的编程语言不同。Python......
  • 找到一种方法将program1的输出作为python中program2的输入发送
    有人可以帮我找到一种方法将program1的输出作为python中的program2的输入发送将其保存为.csv文件不会对我有帮助,因为该程序应该尽快执行这些任务。因此我正在寻找一种方法将程序1的终端输出直接发送到程序2在Python中,可以使用子进程模块将一个程序的输出发送到另一个程......
  • 同时运行多个Python程序的最佳方法
    我有一个python程序,我想同时运行多个具有不同参数的实例。这些实例彼此之间不进行通信。在单独的终端中运行每个实例太乏味了。我考虑使用多处理模块将每个实例作为单独的进程运行,但是我希望能够随时停止和重新启动某些单独的实例,而不会中断其他正在运行的实例。是否有任何流程......
  • 替换 Python 数据框中包含值的 <
    我有一个数据框,在某些列中存在诸如“<0.5、<10、<100”等值。如果值仅包含“<”,我想将所有这些值替换为0。我该怎么做?我对Python比较陌生。尝试使用pd.DataFrame.replace()。importpandasaspd#创建示例数据框df=pd.DataFrame({'A':['<0.5','<10',15,20],......
  • 基于funasr+pyaudio实现电脑本地麦克风实时语音识别项目语音转文本python实现
    【框架地址】https://github.com/modelscope/FunASR【简单介绍】FunASR是一个功能全面的语音识别工具包,支持多种预训练模型的推理和微调,提供高精度和高效能的语音识别服务。结合PyAudio库,可以实现电脑本地麦克风实时语音识别项目。该项目首先通过PyAudio库捕获麦克风输入的......
  • 从Python中的数据框中删除不必要的数据
    所以我这里有一个dat文件,我正在使用Python来读取它。在整个文件中,有一些不必要的行,例如BEGIN等,而我真正想开始阅读的部分是从数据帧开始。因此,我想检查在Python中执行此操作的最佳方法是什么,并且只阅读数据框何时开始?谢谢!以下是使用Python从数据......