Подготовленная вставка по дублирующим ключам mysql запросов в ruby - PullRequest
0 голосов
/ 15 мая 2018

Я конвертирую скрипт узла в рубиновый, чтобы освежить в памяти язык (у меня не было особой причины использовать его в последнее время), и хочу использовать вставку MySQL при запросе обновления дубликата ключа, который был подготовлено заранее. Запрос готовится так:

$add_update = db.prepare('insert into `titles` (`title`,`image`,`sku`) value (?,?,?) on duplicate key update `title`=?,`image`=?')

но это выполнить, это не красиво

$add_update.execute('Item','item.jpg','00012534','Item','item.jpg');

Естественно, эти вопросительные знаки немного запутывают (меня уже опрокинули при обновлении только исходного изображения). Я пробовал связывать имена в запросе, и хотя MySQL в порядке с тем гемом, который я использую, mysql2, но из-за его документации кажется, что возможно, я не вижу какой-либо специфики, как это сделать.

В идеале я мог бы передать хеш, содержащий ключи и значения, которые я хочу использовать, но мой google-fu подвел меня (возможно, я просто использую неправильные термины, так как не могу представить, что это не поддерживается). Что-то вроде:

$add_update = db.prepare('insert into `titles` (`title`,`image`,`sku`) value (:title,:image,:sku) on duplicate key update `title`=:title,`image`=:image')
$add_update.execute({:title=>'Item',:image=>'image.jps',:sku'00012534'});

Я не использую rails и выбрал mysql2 simple, потому что это был первый гем, который я обнаружил, чтобы взаимодействовать с моим существующим сервером mysql. Если есть другой драгоценный камень, который поддерживает то, что я ищу, у меня нет проблем с изменением, этот проект на самом деле просто для того, чтобы немного попрактиковаться в рубине и стряхнуть паутину.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...