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
分配查询数据时的数组,并分配该数组中的各个值。
我正在尝试从 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
分配查询数据时的数组,并分配该数组中的各个值。