问题标签 [pg8000]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
334 浏览

python - 在 sql 脚本中使用位置参数的问题,使用 pg8000

我有以下 SQL 查询:

它工作正常,除非我想避免对“interval_sec”使用字符串替换并使用位置参数,就像我对其他参数一样。问题是,如果我这样做:

我收到以下错误:

错误处理程序中间件捕获了以下异常: {'S': 'ERROR', 'V': 'ERROR', 'C': '42803', 'M': 'column "aggregate_counts.time_window" 必须出现在 GROUP BY子句或在聚合函数中使用','P':'177','F':'parse_agg.c',​​'L':'1344','R':'check_ungrouped_columns_walker'}

文件文件“pg8000/core.py”,第 1829 行,在执行 ps = cache['ps'][key] KeyError: ("SELECT sum(unmatched), TIMESTAMP WITH TIME ZONE 'epoch' + INTERVAL '1 seconds' * round(extract('epoch' from time_window) / %s) * %s as time_window FROM aggregate_counts WHERE revision_name = %s GROUP BY round(extract('epoch' from time_window) / %s)", ((701, 1, ), (701, 1, ), (705, 0, .text_out at 0x10c58cea0>)))

位置参数是否只能用于比较(=、>=、< 等...)?

0 投票
0 回答
143 浏览

sqlalchemy - 使用 pg8000 时查询崩溃

我正在使用 pg8000 和 SQLAlchemy 对 Amazon Redshift 表进行查询。有时我的查询因以下错误而崩溃。

但是,这仅发生在数据库中的一个表上。而且这种行为是完全随机的。不知道为什么 SQLAlchemy 会抛出programmingError以及它是否正确

0 投票
1 回答
213 浏览

pandas - 使用 pg8000 读取红移数据时如何避免字节引用的列标题

我正在通过 pg8000 在 pandas 中加载一些红移数据:

pg8000_cnx是红移数据库的连接对象。我总是得到字节引用的列,例如:

我知道我可以使用.decode('utf-8')和一些列表理解将列转换回字符串,但我试图让它们从 redshift 本身以字符串格式加载。尝试使用 pg8000 光标使用不同CLIENT_ENCODING的设置,但仍然在 pandas df 中获得字节引用列。

是否有一些我缺少的 redshift 或 pg8000 选项会从 db 连接对象本身加载 utf-8 解码字符串中的列标题?

0 投票
0 回答
791 浏览

sqlalchemy - 无法通过 psycopg2 使用联合 ADFS 和 IAM 连接到 Redshift

对于用户访问 Redshift,我们在 ADFS 和 IAM 之间使用联合安全性。我们能够使用 JDBC 连接字符串通过 dBeaver 和其他工具成功连接 Redshift 并与之交互,以及使用数据库上的用户(而非联合用户)与 Python 成功连接和交互。但是 psycopg2、pg8000 和 sqlalchemy 由于此模型所需的附加连接选项而失败。

我们的连接字符串:

psycopg2、pg8000 和 sqlalchemy 都因以下某些版本而失败

或者

大概是因为 Redshift 和 AWS 的特定选项和 IAM 协议。

唯一可行的解​​决方案是使用 JayDeBeAPI,因为它需要一个原始的 JDBC 连接字符串——无论多么专业。这个问题是 JayDeBeAPI 比其他库慢得多——例如,70k 行查询需要 26 秒,而 psycopg2 中需要 1.2 秒。

有没有可能将任意连接选项传递给 psycopg2 或 pg8000 的方法?或者任何其他可以完成此任务的 Python 库?

0 投票
1 回答
1149 浏览

python - Redshift 表上的并发插入问题

我正在尝试使用 AWS 胶水上的 python 脚本同时处理插入/更新到 redshift 数据库。我正在使用 pg8000 库来执行我所有的数据库操作。并发插入/更新失败并出现错误Error Name:1023 ,Error State:XX000)。在研究错误时,我发现该错误与Serializable Isolation有关。

任何人都可以查看代码并确保在插入/更新发生时不会发生冲突吗?

我尝试在调用类中使用随机睡眠时间。它适用于几个案例,但随着工人数量的增加。插入/更新案例失败。

我希望插入/更新发生在日志表中而不会锁定/出错

0 投票
2 回答
1524 浏览

python - 如何修复 AWS Glue 作业中的“模块 'pg8000' 没有属性 'connect'”错误

我正在尝试设置将数据加载到 RDS PostgreSQL 数据库中的每日 AWS Glue 作业。但是我需要在将数据加载到它们之前截断我的表,因为这些作业适用于整个数据集。

为此,我正在实施此处给出的解决方案:https ://stackoverflow.com/a/50984173/11952393 。

它使用纯 Python 库 pg8000。我遵循这个 SO 中的指导方针,下载库 tar,解压缩,添加空__init.py__文件,压缩整个想法,将 zip 文件上传到 S3,并将 S3 URL 作为 Python 库添加到 AWS Glue 作业配置中。

当我运行该作业时,似乎正确导入了 pg8000 模块。但后来我收到以下错误:

我肯定做错了什么......但找不到什么。欢迎任何建设性的反馈!

0 投票
1 回答
304 浏览

python-3.x - pg8000 创建表将列名与类型混淆

我在我的 python 包中将 pg8000 用于 Postgres api。我创建了一个函数就是创建一个表是没有这样的表存在的。功能如下:

查询运行没有错误(在程序和在线小提琴中) 除了表列名称例如:“key CHAR(9)”、“date DATE”等。因此查询正在执行但无法识别语法。但是根据这个查询语法是正确的。有小费吗?

注意 1:这里有一个类似的问题但我没有类似的症状,因为我没有收到语法错误。我的查询成功。

0 投票
1 回答
2365 浏览

pandas - pandas 无法写入 Postgres db 抛出“KeyError: ("SELECT name FROM sqlite_master ..."

我创建了一个包,允许用户将数据写入 sqlite 或 Postgres db。我创建了一个用于连接数据库的模块和一个提供写入功能的单独模块。在后一个模块中,write 是一个简单的 pandas 内部函数调用:

写入sqlite db(使用'sqlite3'连接)是成功的,但是在写入Postgres db时我收到以下错误:

我将错误跟踪到以下文件:

似乎正在发生的事情是“.to_sql”函数被配置为尝试在“sql.py”文件中此时写入名为“sqlite_master”的数据库:

更仔细地查看错误,您可以看到与 db 的连接正确,但 pandas 正在寻找一个 sqlite db:

在此处输入图像描述

我知道数据库名称是我半年前第一次开始使用 sqlite 时使用的名称,所以我想在某个地方设置了配置值。所以:

  1. 我的推理正确吗?
  2. 如果是这样,我该如何更改配置?
  3. 如果没有,可能发生了什么?
0 投票
2 回答
406 浏览

python - 如何在 python 中捕获 pg8000.core.IntegrityError 异常?

当尝试使用pg8000加载到 postgresql 中的表时,我正在尝试运行测试用例以捕获主键异常。但是,我无法在 python 中捕捉到它。下面是我的代码。

下面是错误信息

非常感谢任何帮助。谢谢你。

0 投票
0 回答
610 浏览

python - pg8000 和 SQLAlchemy 的区别

谁能帮我找到 pg8000 相对于 SQLAlchemy 的优势?我们使用 Python 连接到 postgresql,有时也连接到 Google Firebase。

因此,这将有助于交互和更好的性能。

-Srivathsava