gpt4 book ai didi

r - 在 R 中查询 PostgreSQL 数据库时如何修复警告消息 "Closing open result set, cancelling previous query"?

转载 作者:行者123 更新时间:2023-12-04 10:13:06 25 4
gpt4 key购买 nike

下面是我在 R 中用于从 PostgreSQL 数据库中提取 ID 的代码片段。当我运行该函数时,我从 R 收到以下警告消息:

In result_create(conn@ptr, statement) : Closing open result set, cancelling previous query

如何在代码开头不使用 options(warn=-1) 来避免出现此警告消息,从而抑制警告而不是

con <- dbConnect(RPostgres::Postgres(),
user = "postgres",
dbname = "DataBaseName",
password = "123456",
port = 5431)


get_id <- function(connection, table){

query <- toString(paste("SELECT id FROM ", table, sep = ""))
data_extract_query <- dbSendQuery(connection, query)
data_extract <- dbFetch(data_extract_query)
return(data_extract)
}


get_id(con, "users")

最佳答案

我找到了解决问题的方法。

我在 GitHub 上找到了一个关于 RSQLite 的线程 https://github.com/r-dbi/RSQLite/issues/143 .在此线程中,他们明确设置了 n = -1dbFetch()功能。

这似乎解决了我的问题,通过像下面这样编辑代码,警告消息没有再次出现:

data_extract <- dbFetch(data_extract_query, n = -1)

n的含义是查询应返回的行数。通过将其设置为 -1将检索所有行。默认情况下,它设置为 n = -1但出于某种原因,在此版本的 R (3.6.3) 中仍会显示警告。

调用 ?dbFetch在 R 中,您可以看到更多相关信息。我在 R-help 页面中包含了一个片段:

Usage

dbFetch(res, n = -1, ...)

fetch(res, n = -1, ...)

Arguments

res An object inheriting from DBIResult, created by dbSendQuery().

n maximum number of records to retrieve per fetch. Use n = -1 or n = Inf to retrieve all pending records. Some implementations may recognize other special values.

... Other arguments passed on to methods.

关于r - 在 R 中查询 PostgreSQL 数据库时如何修复警告消息 "Closing open result set, cancelling previous query"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61229489/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com