问题标签 [asyncpg]

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 投票
0 回答
119 浏览

python - asyncpg 中的死锁 - 如何解决?

我有一个简单的执行语句,如果满足条件就会更新。我理解死锁是当进程 A 和 B 争夺相同的资源时,它们都依赖另一个来完成。

但是,我只有一个简单的 UPDATE 语句,我找不到死锁的其他来源 - 但我只是对这条线如何导致死锁语句感到困惑:

它怎么会出现在一个简单的 UPDATE 语句中?

谢谢你的时间。

0 投票
2 回答
11171 浏览

python - 如何在 FastAPI 中进行持久数据库连接?

我正在用 FastAPI 编写我的第一个项目,但我有点挣扎。特别是,我不确定我应该如何在我的应用程序中使用 asyncpg 连接池。目前我所拥有的是这样的

在 db.py 我有

然后在单个文件中,我使用 get_pool 作为依赖项。

首先,我拥有的每个端点都使用数据库,因此为每个函数添加依赖参数似乎很愚蠢。其次,这似乎是一种迂回的做事方式。我定义一个全局,然后定义一个返回该全局的函数,然后注入该函数。我相信有更自然的方式来处理它。

我看到人们建议将我需要的任何东西作为属性添加到应用程序对象中

但是当我有多个带有路由器的文件时它不起作用,我不知道如何从路由器对象访问应用程序对象。

我错过了什么?

0 投票
1 回答
925 浏览

python - PostgreSQL - 用户“postgres”的对等身份验证失败

我有一个在我的 Windows 机器上运行的机器人,我最近购买了一个 Ubuntu 虚拟服务器。在一系列类似的无限错误之后,我只是完全重置服务器并从头开始重试。您可以在这里查看我以前的一些错误的另一篇文章:主机没有 pg_hba.conf 条目/连接调用失败/集群 12 主的数据目录无效 - Postgresql Ubuntu

所以现在当我尝试启动我的机器人时,它给了我这个错误:

数据库、用户和密码都是正确的。它现在仍在工作,因为该机器人正在我的 Windows 机器上运行,这就是为什么我认为这是一个 Ubuntu 特定问题。我的收听地址设置为“

本地 Windows 服务器上的 pg_hba.conf:

我在 Ubuntu 服务器上的 pg_hba.conf 设置为:

如果我将第一行从 更改peermd5,我得到:

并更改为trust说没有数据库xxx,这是我本地 Windows 机器上的数据库。打字ps ax | grep postgres显示:

我已经坚持了很长时间,我不知道该怎么做。我真的希望有人知道这个问题,我希望我已经提供了足够的信息。谢谢你。

我认为它试图连接到 Ubuntu 服务器上的数据库,而不是我的 Windows 机器上的数据库。如何使它以 Windows 机器为目标?

0 投票
1 回答
131 浏览

python - 共享内存缓冲区 Postgresql

关于我的状态的一点背景:

我目前正在使用 OVH Advance 5 服务器(AMD Epyc 7451 - 24 c / 48 t - 128 GB 内存 - 450x2 GB SSD),我想知道我应该为 Postgresql 使用的规格。

我将使用多进程运行 24 个 Python 脚本和 24 个不同的池(使用 asynpg 连接),并且我通常会使用大约 40 GB 的 RAM 左右——这意味着我有大约 88 GB 的内存可以使用。

在我从未真正接触过 Postgres 的任何设置之前;我应该使用什么样的价值观:

共享内存/最大连接数/随机页面成本?

阅读它,它说建议共享内存通常应该占用大约 25% 的可用 RAM - 但其他消息来源说 2 - 4 GB 通常是最佳点,因此任何见解都将不胜感激。

0 投票
0 回答
23 浏览

python-3.x - postgres 架构上的不一致权限错误

我有远程数据库服务器,我有不同的角色和用户。例如我有数据库test和模式test_schema和表test1

我使用连接到数据库,test_user并且正在查询如下表。

它有时可以正常工作,有时它会因以下错误而失败。

这里的实际问题是错误的不一致,如果它没有权限,为什么它会工作一段时间?

附加信息:

  1. 使用python3
  2. 使用 asyncpg
0 投票
2 回答
147 浏览

python - 使用字符串比 BIGINT 更好?(postgresql)

我正在开发一个 discord.py 机器人。我从 sqlite3 切换到 postgresql(特别是 asyncpg)并且value out of int32 range在尝试存储公会 ID 时遇到了错误。我可以通过使用 bigint 之类的东西来解决这个问题,但我担心它会占用太多空间?改用字符串会更好吗?

[编辑]:我使用的数字是 18 位数字

0 投票
1 回答
1050 浏览

python - 如何在 Tortoise-ORM 中使用 Postgresql 数组字段

几乎是标题,我正在尝试设置 Tortoise-ORM 模型,该模型将包含对应于 Postgresql Array 列的字段。

似乎要正确地做到这一点,我需要从 asyncpg 构建(因为它具有完整的数组支持)向上扩展 Tortoise Field。但是,我刚刚从乌龟开始,也许有一些更好/更简单的前进方式/有人已经做了类似的事情。

0 投票
0 回答
130 浏览

python - 从 Pulsar 读取并使用 asyncio 加载到 Postgres

我正在尝试从 pulsar 读取数据并在 Python 中使用 asyncio 和 asyncpg 写入 postgres 表。

然后我作为消费者连接到 pulsar,获取数据并尝试使用下一行写入 postgresql 表:def run_consumer():

但我收到一个错误:This event loop is already running

欢迎任何提示,在此先感谢。

0 投票
2 回答
343 浏览

python - Asyncpg 池等待所有结果

我使用 asyncpg 进行繁重的查询,通常需要大约 15-20 秒来计算。我正在试验池的最小和最大大小,并注意到一个奇怪的行为。当我尝试发出多个请求时,它们会同时执行,但结果会成批返回。批次的大小始终与池相同。这种行为会导致第一次响应的时间很长,比如 50 秒左右。第一批之后,我需要再等待 50 秒,才能得到其他结果。似乎 asyncpg 等待从池中收集所有结果并返回它们,而不是在它们准备好后立即返回结果。

有没有办法在执行后立即获得单个请求的结果?也许我缺少一些设置?

有一段时间我可以保持 25 个连接,但这似乎是一种 hack,我真的不喜欢。

如果这很重要,我会使用 DSN 创建一个池。

这是我用来向 DB 发出请求的代码:

现在我正在测试默认池大小(最大 10,最小 10)并同时发送 25 个请求。

如果我将 max 和 min 设置为 25,当我得到这些结果时:

5/5 连接带来可怕的结果

0 投票
0 回答
156 浏览

python - 使用 asyncpg 知道这两行是否都存在并且有一个值(或 null)

在我的一个 Discord 机器人上配置新闻提要时,我想提供描述性错误/信息消息:

  • 一种用于未配置提要的情况(行不存在。)
  • 一种用于特定列具有 NULL 值的情况。

虽然这对两个查询很简单,但我想将其简化为一个查询,如果可能的话,我想出了一种简单的方法:使用fetchrow它将返回一个Record对象。这符合我的两个条件,如果数据库中没有行,我会得到None结果,但如果有行,我会得到Record我选择的列的对象,这将是或不会是NULL. 例如:

我可以if not update检查是否Record存在,然后if not update["role_id"]检查role_id列是否为NULL.

我的问题是:是否有不同/更简单的方法,或者这很好吗?