问题标签 [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 回答
234 浏览

postgresql - 使用 psycopg2 连接到 App Engine (Google Cloud) 上的 Postgres

我希望使用psycopg2在 App Engine(标准)上运行的 Python 应用程序连接到我的 PostgresSQL 实例。我已经搜索了很多天,但我无法找到一种解决方案,可以让我使用psycopg2. 所有解决方案(包括官方文档中的解决方案)都指向使用pg8000.

我试图psycopg2用作驱动程序的原因是我想在单个事务中运行多个 sql 查询,例如:

任何帮助将不胜感激。

0 投票
1 回答
144 浏览

python - 尝试将日期时间插入 Postgresql (pg8000) 时出现键错误

我试图在 pgsql 中插入一个日期时间

f'UPDATE userdata SET claimed = {fclaim} WHERE userid = {user.id}'

以下是 fclaim 变量的制作方法

当我尝试将 fclaim 插入 postgresql 时,出现以下错误

在 ubuntu 20.04 上使用 python 3.6.11

0 投票
3 回答
1399 浏览

sqlalchemy - sqlalchemy ORM 调用失败并出现 TypeError: expected bytes, str found

我正在用我编写的一些代码进行以下(相对)简单的调用:

我对此代码有两组集成测试,一组在本地运行并使用psycops2TLS,另一组在 GCP 开发环境(GCP 云功能)中运行并使用pg8000UNIX 套接字(GCP 要求(?)云功能通过 UNIX 套接字连接到 Cloud SQL - 请参见此处)。本地集成测试运行良好。但是,开发测试可靠地失败并出现以下错误:

这个特定的函数调用实际上只是这种失败的一个例子;我所有的数据库调用都失败并出现相同的_execute_and_instances错误!

也许有人对解决此问题的方法有所了解?

0 投票
2 回答
139 浏览

python-3.x - 需要使用python的dbase连接的概述解释

我使用 python 和 postgreql 已经一年多了。我可以通过盲目使用各种库来连接和使用 postgres 数据库。但是每当我改变平台(最近从 macOS 笔记本电脑到远程 ubuntu 服务器)时,我都会经历一天左右的时间来尝试让库工作,例如。我在某些模块中使用了“pyodbc”,但是当我将代码迁移到服务器时,我不得不切换到“pg8000”,因为这些模块一直在抛出错误。

有人可以解释或指向一个链接,解释 python 如何连接到 dB 的吗?例如,为什么我需要一个用于“pyodbc”的 MS ODBC 驱动程序来连接到 Azure SQL 或 postgresql,但“pg8000”似乎根本不需要连接到 postgresql?当我移动到 Ubuntu 环境并安装 ODBC 驱动程序时,它们显示在 /etc 和 /opt(用于 MS ODBC)下的根目录下,但也出现在我的 Conda 环境(/anaconda3/envs/)中,我不知道哪个是'ODBC.ini' 的正确选择?

就像我说的,我可以让事情发挥作用,但我真的不明白它们为什么会发挥作用,这意味着我每次处理环境变化时都会浪费时间进行试验。我还没有在网上找到一个解释,它涵盖的不仅仅是一个非常具体的情况,例如。'这里是如何安装我们的驱动程序......'任何帮助将不胜感激。

最终更新

跟随回应特别是。@Thompson 下图似乎是最终解释,我对在哪里寻找答案有了更好的了解。对于记录 pyodbc,SQLAlchemy 和 pg8000 一直是我选择的工具,除了问题中所述之外没有任何问题。

在此处输入图像描述

0 投票
1 回答
205 浏览

python-3.x - 基于纯 python 的 postgresql/redshift 驱动程序上是否有服务器端光标?

我正在使用pg8000带有 Python 3 的包来查询表,并注意到应用程序的内存消耗随着表的记录数的增长而增长,现在已达到超过 16GB 的内存消耗。

在检查包的游标行为时,我发现游标在被 any或方法出队之前pg8000将整个结果集缓存到属性下的内存队列中。curr._cached_rows.fetchone().fetchmany(n).fetchall()

在我的特定情况下,我通过在 Glue 作业上使用 Python shell 来提取 AWS Redshift 上的记录,该作业带有 2 个限制:

  1. 不支持基于 Python 的 C 包(psycopg不幸的是,不支持服务器端游标的缓存)
  2. 最大 16GB 内存。

我浏览了pg8000文档,但找不到任何关于设置服务器端光标的参考。无论如何设置服务器端光标pg8000?或者是否有任何其他支持服务器端光标的 postgres/redshift 纯 Python 包?

0 投票
1 回答
121 浏览

xml - 使用 pg8000 将 xml 数据插入 PostgreSQL

我有一个包含 XML 数据的 S3 文件,我需要将其插入 Aurora PostgreSQL 数据库 (PostgreSQL 11.9) 中的表中。为此,我正在尝试使用 AWS lambda。在 lambda 函数中,我从 S3 对象读取数据并使用 pg8000 尝试将记录插入表中。插入 sql 失败

例子 -

S3 文件中的 XML

从 lambda 中的 S3 文件读取数据的代码

插入数据的代码

我也试过

关于如何将 XML 数据插入 PG 中的表的任何建议?

0 投票
0 回答
188 浏览

python - SQLAlchemy,Postgres:在没有事务的情况下运行 SQL

我正在使用 SQLAlchemy 和 pg8000 连接到 Postgres 数据库。

我检查了表pg_stat_activity,它向我显示了一些处于“事务空闲”状态的选择查询,其中很多。但是应用程序的读取比写入多得多,也就是说,插入很少而且相差甚远。

我怀疑每个查询都会创建一个新事务,即使对于简单的选择语句也是如此。

是否可以在不需要事务的情况下运行只读查询?这样就不需要提交/回滚了吗?

目前,该应用程序使用方法sqlalchemy.engine.Engine.execute运行其查询以进行 CRUD 操作和游标以调用存储过程。我应该如何更新这些方法调用以表明我希望其中一些不启动事务?

0 投票
0 回答
188 浏览

python - 从并行查询高效创建 Panda 的 DataFrame

我有一个脚本,我需要通过查询数据库来创建一个大型数据框。我创建了一个类,它将查询划分为单独的进程,在 where 子句中划分主键并将成批的记录推送到队列中。完成这项工作的辅助函数如下。

我当前的实现结合了我的 fetch_queue 中的所有批处理列表,并在查询完所有数据后将它们转换为 pandas 数据框。但是,这通常需要与从数据库中提取所有数据一样长或更长的时间。

我最初的想法是有一个“reducer process”,它在获取过程中从 fetch_queue 创建更小的数据帧,并将它们附加到一个列表中,并在获取所有数据后与 pandas concat 结合。但是,由于 pd.concat 中的指数复制,这比等待结束为记录制作数据帧要慢。(如果有必要,我可以选择减少批次)

似乎我缺少一些效率,以便能够在加载所有数据之前开始处理位于内存中的数据的数据帧。

更新

跑步

运行时间为 13 秒,与将数据拉入并行进程所需的时间大致相同,这使得 pandas 处理可以忽略不计。我不确定 Pool.map() 的实现如何将数据传递到主进程中,但与尝试使用队列相比,它的开销似乎要少得多。

0 投票
0 回答
322 浏览

python - 无法使用 pg8000 连接到 AWS RDS Postgres,但可以使用 psycopg2

朋友们,

我正在尝试从运行在 EC2 机器上的 python 脚本连接到 AWS RDS 中的 Postgres 实例。它与 psycopg2/sqlalchemy 配合得很好

但是当我使用 pg8000/sqlalchemy 作为

错误信息是

我也尝试设置connect_args={'ssl_context': True}连接但仍然失败。有人有什么想法吗?我正在使用 python v3.6、sqlalchemy v1.4.15 和 pg8000 v1.19.4。谢谢你。

0 投票
0 回答
390 浏览

python - 传递给 sqlalchemy 的 create_engine 的正确 SSL 参数是什么?

我无法确定在 Heroku 上使用 Django 与 Python 3.7.10 和 sqlalchemy 1.3.23 连接到 Postgres 数据库的正确参数。我知道这不是 sqlalchemy 的最新版本,但是在 Python 从 3.7 更新的前一周开始失败,所以我对发生了什么感到困惑。我发现 sqlalchemy 的文档有点难以浏览,当仅更新 Python 时它停止工作也无济于事。

所以基本上在 Python 中,连接是在这一行中设置的:

当我去执行时Database,我得到了这个:

这似乎是 sqlalchemy 的一部分。

运行脚本时出现的错误是:TypeError: connect() got an unexpected keyword argument 'ssl'.

我已经尝试将参数更改为ssl_mode并且sslmode因为我已经看到 SO 帖子和发布类似问题的问题,但是这些更改都没有做任何事情。我也试过像这样向数据库调用添加另一个参数:db = records_client.Database(DB_URL_FROM_ENV_VAR, connect_args={'sslmode':'require'})但都无济于事。

如何配置数据库 URL 和/或使用 SSL 的连接尝试以连接到数据库?

这是具有以下设置的完整堆栈跟踪: