Ruby SQlite SELECT 返回不需要的数组

Ruby SQlite SELECT Returning an Unwanted Array

我正在尝试从 sqlite 数据库中获取几个值,但它没有返回我正在 SELECT-ing 的值,而是在另一个数组内的数组中返回该值。


我的代码:

def self.find(id, database_connection)
  name = database_connection.execute("SELECT name FROM pokemon WHERE id = ?", id)
  type = database_connection.execute("SELECT type FROM pokemon WHERE id = ?", id)

  pokemon_inst = Pokemon.new(id: id, name: name, type: type, db: database_connection)
end

问题:

当我运行pry.binding

name 输出 [["Pikachu"]]

type 输出 [["electric]]


这工作正常吗?我无法想象我应该只调用 name[0][0] 来访问数据,对吗?

execute() 方法将它返回的所有内容包装在一个数组中,每个数据库行都放在一个数组中。因此,对于被查询的单个值在两个数组中是正确的。

由于一切正常,我将调整我的代码:

def self.find(id, database_connection)
  pokemon = database_connection.execute("SELECT * FROM pokemon WHERE id = ?", id).flatten
  name = pokemon[1]
  type = pokemon[2]

  pokemon_inst = Pokemon.new(id: id, name: name, type: type, db: database_connection)
end

调整是 flatten 分配查询数据时的数组,并分配该数组中的各个值。