ruby 2.2。 : 将参数传递给配置 yaml 文件中的 SQL 请求字符串
ruby 2.2. : passing parameter to SQL request string in config yaml file
给定一个配置文件config.yml
# config.yml
folders:
tree:
top: "SELECT * FROM mytable WHERE name = 'alpha'"
bottom: "SELECT * FROM mytable WHERE name = '#{name}'"
当我在 ruby 脚本中执行时:
# myscript1.rb
@config = YAML::load_file File.join( @rundir, 'config.yml')
....
@db.execute(@config['folders']['tree']['top'])
db select 正确执行..
我应该如何将我的 ruby 命令写入 运行 第二个请求传递 'name' 作为参数?
# myscript2.rb
@config = YAML::load_file File.join( @rundir, 'config.yml')
....
name = "beta"
@db.execute(@config['folders']['tree']['bottom']) # need parameter ?
感谢帮助
对于我熟悉的 Ruby 数据库接口,您可以将参数传递给 execute
,这些参数将被 SQL 转义并在 [= 标记的点插入到查询中11=]。因此,首先您想将查询重写为:SELECT * FROM mytable WHERE name = ?;
。然后,您可以调用@db.execute(@config['folders']['tree']['bottom'], name)
。与 Ruby 字符串插值相比,这还具有确保任何不受信任的参数被正确转义的优点。
给定一个配置文件config.yml
# config.yml
folders:
tree:
top: "SELECT * FROM mytable WHERE name = 'alpha'"
bottom: "SELECT * FROM mytable WHERE name = '#{name}'"
当我在 ruby 脚本中执行时:
# myscript1.rb
@config = YAML::load_file File.join( @rundir, 'config.yml')
....
@db.execute(@config['folders']['tree']['top'])
db select 正确执行.. 我应该如何将我的 ruby 命令写入 运行 第二个请求传递 'name' 作为参数?
# myscript2.rb
@config = YAML::load_file File.join( @rundir, 'config.yml')
....
name = "beta"
@db.execute(@config['folders']['tree']['bottom']) # need parameter ?
感谢帮助
对于我熟悉的 Ruby 数据库接口,您可以将参数传递给 execute
,这些参数将被 SQL 转义并在 [= 标记的点插入到查询中11=]。因此,首先您想将查询重写为:SELECT * FROM mytable WHERE name = ?;
。然后,您可以调用@db.execute(@config['folders']['tree']['bottom'], name)
。与 Ruby 字符串插值相比,这还具有确保任何不受信任的参数被正确转义的优点。