Ruby SQlite SELECT返回不需要的数组

时间:2017-12-07 16:20:42

标签: sql ruby sqlite select execute

我试图从sqlite数据库中获取一些值,但是不是返回值enter code here,而是返回另一个数组内的数组中的值。

我的代码:

SELECT

问题:

当我运行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]]来访问数据,对吗?

1 个答案:

答案 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数组。