问题标签 [psycopg]

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 回答
1489 浏览

postgresql - postgres 是否在缓存我的查询?

我有一个非常简单的 Python 代码片段来运行 Postgres 查询,然后将结果发送到仪表板。我psycopg2用来定期运行相同的查询。我们暂时不用担心循环机制。

作为参考,实际查询是:

当我运行它时,即使它们应该改变,我仍然得到相同的结果。如果我psycopg2.connect()用 a 将该行移入循环conn.close(),则一切正常。然而,根据连接和游标文档,我应该能够一直使用相同的游标(因此,连接)。

这是否意味着 Postgres 在每个客户端连接的基础上缓存我的查询?

0 投票
1 回答
481 浏览

python - 使用大型 python 列表和 Psycopg2 快速查询 Postgress 表。

我有一个包含 2000 个以上元素的 python 列表。我有一个 postgress 表,我需要查询这些元素中的每一个,我目前正在使用以下内容。

这样做是为列表中的每个元素一次查询一个表,然后我将这些数据存储在数据框中,然后使用

问题是超过 2000 个元素的响应需要一段时间才能生成,有时会导致我的 webapp 超时或浏览器超时。

我正在寻找一种更快或更有效地查询表中所有元素的方法。

我考虑过为列表中的每个元素使用 for 循环并使用 cur.fetchone() 但我认为这会更慢。

0 投票
1 回答
1110 浏览

python - 即使在我安装了 psycopg2 之后,也没有名为 psycopg2 的模块

我有

在我的前几行代码中。然而,这表明

即使我安装了 psycopg2

以下是来自终端的详细错误。

另外我尝试在我的python控制台中运行导入并且没有错误,但是,当我运行测试时它有错误

谢谢

0 投票
0 回答
1094 浏览

python-3.x - Python 3.5.x 多处理在 74% 可用 RAM 系统上抛出“OSError:[Errno 12] 无法分配内存”

multiprocessing我编写了一个 Python 3.5 应用程序,它使用库生成多个进程。它在配备 2 个 Intel Xeon E2690 v1(每个 8 核)和 96GB RAM 的专用服务器机器上运行在 Ubuntu 16.04.3 LTS 上。

该系统运行一个 PostgreSQL 实例,该实例配置为使用最大约 32GB 的 RAM(effective_cache_size设置为32GB),但这只是出于我的问题的目的(我尝试了 、 、 等的几种effective_cache_size组合work_memshared_buffers

每个进程都会打开一个到数据库的连接并多次重复使用它。

这是代码的简化部分,显示了我如何生成一个新进程:

在生成超过 200 个进程后(确切的数量并不总是相同),应用程序在尝试生成新进程时会抛出异常:

ulimit -a输出是:

/etc/sysctl.conf我设置了以下适用于mdadmPostgreSQL 的参数:

我也尝试设置和取消设置,vm.nr_hugepages但它并没有解决问题。

在启动我的 Python 应用程序之前,RAM 使用量大约是500 MBover 96 GB,所以我可以看到整个 RAM 是相当空的。在产生这 200 多个进程之后,RAM 开始填充并在大约20 GB(剩余74 GB仍然空闲)时达到最大值,然后抛出Cannot allocate memory异常。

问题是:为什么?

我试图测量整个流程的足迹,并找到memory_profiler了一个 Python 库/工具。我能够得到这张图:

287 个进程的内存占用。

如果我没记错的话,这些都是关于47500 MiB内存的,所以关于50 GB“占用”的 RAM。每个进程的footprintf 应约为170 MB. 问题是我无法在任何地方看到占用的 RAM 量。以下是一些输出:

通过降低 PostgreSQL 所需的内存量,我能够启动 287 个进程,但这总是会导致大量可用 RAM ( 74GB)。这是我的 PostgreSQL 9.6 ( ) 的配置文件postgresql.conf

编辑

我在 SO 上找到了这个答案,并找到了一种直接测量整体内存使用情况的方法。

Python(产生了 288 个进程):

PostgreSQL:

我仍然不明白为什么常用工具(vmstat, free, top, glances)会显示另一数量的已用 RAM。

0 投票
1 回答
177 浏览

python-3.6 - asyncpg 中是否有 register_adapter(在 psycopg 中找到)等效函数

我们是否必须在 asyncpg 中注册适配器才能执行查询,就像在 psycopg 中一样?

http://initd.org/psycopg/docs/extensions.html#psycopg2.extensions.register_adapter

0 投票
0 回答
498 浏览

python - 使用 Psycopg2 ExecuteValues 将 SQL 插入 Postgres

我只是尝试使用 Python Psycopg2 模块的 executeValues 函数将新行插入到现有 Postgres 数据库中。我使用它是因为将来我需要进行批量插入,但现在我只测试一行。

这是代码:

我得到的错误如下图所示:

错误

'Sample' 是要插入的表。它包含两个字段:“id”(整数)和“名称”(文本)。'City' 是同一数据库中的另一个表,其中包含一个 'id'(整数)和 'name' 字段(文本),其中 name = 'Boston' 的行已被填充。

我相信错误出现在 valuesList 中的 SELECT 语句中。

有人可以帮忙吗?

谢谢!

0 投票
2 回答
667 浏览

python - 如何在python中使用sql查询获取列表?

我在这里定义一个函数并进行查询。

在这一行中应该是一个长度为 7 的列表,但是当我运行print(row[2]) 时,它给我的错误是列表索引超出范围。

这是我得到的错误

0 投票
1 回答
25897 浏览

python - 错误请求 - 浏览器(或代理)发送了此服务器无法理解的请求

我正在尝试创建一个烧瓶应用程序,其中我在网页上有一个文本框。当按下提交时,它会搜索在 postgres 数据库表的文本框中输入的内容。

我收到以下错误:

错误请求浏览器(或代理)发送了此服务器无法理解的请求。”

我的代码如下:

应用程序.py

和我的html文件:

main.html

我敢肯定,它会很容易解决,但我正在努力,所以任何帮助都将不胜感激。

0 投票
1 回答
1317 浏览

python - SQLAlchemy 引擎结果代理错误(Flask Python)

我正在创建一个搜索工具,它使用 psycopg、flask 和 SQLAlchemy 从 Postgres 数据库返回结果。

我收到错误:

sqlalchemy.engine.result.ResultProxy 对象在....

当我搜索“工作编号”时,就会发生这种情况。

我被引导相信这是由于没有与 ResultProxy 交互,但我不知道哪里错了?

应用程序.py

主.html

任何帮助将不胜感激。

0 投票
1 回答
4561 浏览

python - 将数据框复制到具有默认值的列的 postgres 表

我有以下 postgreSql 表stock,结构如下,列insert_time有一个默认值now()

我正在尝试copy以下df

psycopg用来上传df到表stock

收到此错误。

我期待使用 psycopg copy_from 函数,我的 postgresql 表将自动填充插入时间旁边的行。