Не удалось найти унаследованный метод для функции 'dbClearResult' для подписи 'data.frame' '

У меня проблема с моей программой R, запрашивающей базу данных PostgreSQL. Вот код

      ### Here we assume that myuser, mypassword, db, host_db and db_port
### have been defined in previous lines in the code
db_con  <- dbConnect(
    RPostgres::Postgres(),
    dbname = db,
    host = host_db,
    port = db_port,
    user = myuser,
    password = mypassword
)
###
###
### Running the query
query <- dbSendQuery(
    db_con,
    paste(
        "select t1.username, count(*) as query_cnt ",
        "from public.app_queries as t1 ",
        "group by t1.username ",
        "order by query_cnt desc ",
        "limit 50",
        sep = ""
    )
)
###
### Fetching all rows from the ResultSet by setting n = -1
result <- dbFetch(query, n = -1)
###
### . . . using result here in my code . . .
###
### Once the result is no more needed, according to the documentation
### I have to clear the ResultSet before closing the connection.
dbClearResult(result)
###
### And finally close the connection to the database.
dbDisconnect(db_con)

Проблема в том, что dbClearResult(result) в приведенном выше коде происходит сбой со следующим сообщением об ошибке:

      Error in (function (classes, fdef, mtable)  : 
  unable to find an inherited method for function 'dbClearResult' for signature '"data.frame"'

Я действительно начинаю узнавать, как подключить R к PostgreSQL. Как я понимаю из сообщения об ошибке, очевидно, что ResultSet, созданный в моем коде, является data.frame а также dbClearResultэто не нравится. Я проверил dbSendQuery документации, но я не нашел какого-либо конкретного типа, который можно было бы использовать для создания ResultSet.

Не могли бы вы внести некоторые пояснения и указать, в чем моя ошибка?

1 ответ

Решение

dbClearResult относится к query объект, а не result выборки (что является dataframe, отсюда и сообщение об ошибке):

      query <- dbSendQuery(db_con,...)

result <- dbFetch(query, n = -1)

dbClearResult(query)

dbDisconnect(db_con)
Другие вопросы по тегам