我正在尝试从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]来访问数据,对吗?
发布于 2017-12-07 17:36:29
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进行调整,并分配来自该数组的单个值。
https://stackoverflow.com/questions/47699403
复制相似问题