r - 检查 R-DBI 连接对象的类
问题描述
我正在重写一个可选择接受连接对象的函数。应验证该参数是否是有效的连接/通道。我如何使用DBI
包稳健地做到这一点?(具体来说,我正在使用odbc
包。)
我想要可以容纳所有DBI连接对象的东西,但我会满足于 odbc 连接对象
运行这样的东西不会产生我知道如何查询的值inherits()
。
library(DBI)
con <- DBI::dbConnect(RSQLite::SQLite(), ":memory:")
class(con)
# [1] "SQLiteConnection"
# attr(,"package")
# [1] "RSQLite"
DBI::dbDisconnect(con)
相比之下,RODBC 和池返回的类比我能抓住的更好(即和)。RODBC
Pool
如果有帮助,这里有更多来自这个特定 DBI 连接的内部信息。
> str(con)
Formal class 'SQLiteConnection' [package "RSQLite"] with 7 slots
..@ ptr :<externalptr>
..@ dbname : chr ":memory:"
..@ loadable.extensions: logi TRUE
..@ flags : int 70
..@ vfs : chr ""
..@ ref :<environment: 0x0000000000000000>
..@ bigint : chr "integer64"
解决方案
DBI 规范要求¹所有连接都继承自DBIConnection
. “新风格”的后端都是这样实现的,IIRC:
library(RSQLite)
con <- dbConnect(SQLite())
inherits(con, "DBIConnection")
#> [1] TRUE
由reprex 包(v0.2.0) 于 2018 年 5 月 18 日创建。
¹ 从头开始“需要”:最终将明确要求,https://github.com/r-dbi/DBItest/issues/170
推荐阅读
- java - 如何找到平均分最高的学生姓名?爪哇
- javascript - 带有媒体查询的 Javascript 菜单切换
- graphql - GraphQL SPQR:id 不应在创建时显示
- android - 使用最新的 gradle 版本 3.2.1 时找不到源 java 类
- .htaccess - 如何使用 htaccess 根据其分段重定向 URL?
- r - 将(有序)因子映射到ggplot中的颜色
- haskell - toJson 实例单值
- rdbms - 如何设置 Apache Sling 以使用关系数据库
- jquery - 如何让动画倒退
- wpf - 为什么不能用children 克隆Grid?