我正在尝试编写一个使用Sequel与数据库连接的脚本。
如果我有这样的SQL查询:
record_values = csv_row.to_h.values.join(', ')
sql_query = "INSERT INTO table (#{ COLUMN_NAMES.join(', ') }) VALUES (#{ record_values })"
数组record_values
很危险。
我该如何消毒?
我试图用消毒
ActiveRecord.sanitize_sql_array(sql_query)
但是我一直收到错误消息
NoMethodError: undefined method 'sanitize_sql_array' for ActiveRecord:Module
答案 0 :(得分:3)
我不知道Sequel,但是您尝试使用标准的insert
方法吗?
connection = Sequel.connect('...')
table_name = connection.from(:table_name)
# OR
# table_name = DB.from(:table_name)
# table_name = DB[:table_name]
table_name.insert(csv_row.to_h)
我相信它更可靠,因为您避免了COLUMN_NAMES
和record_values
之间的差异。