Выполнение скрипта MySQL из Arduino Yun (без Python)

Я хочу получить данные из базы данных MySQL, которая работает непосредственно в самой Arduino YUN. Я хочу сделать это без Python, а напрямую с помощью команд MySQL и Process. Является ли это возможным?
Каждый пост, который я нашел в Интернете, посвящен тому, «как получить данные с помощью python». Но я не хочу использовать python, потому что подключение к базе данных и т. д. замедляет мои запросы.
Я извлекаю данные из базы данных несколько раз и из разных таблиц. Поэтому я перенес логику извлечения данных в функцию MySQL и теперь хочу просто вызвать эту функцию, используя класс Process. Проблема в том, что он работает напрямую из консоли mysql, работает с использованием python, но не работает напрямую. Говоря прямо, я имею в виду следующее:

Process process;
process.begin("python");
process.addParameter("/mnt/sda1/arduino/python/read.py");
process.addParameter(msg);
process.run();

Этот код отлично работает и использует python. Внутри файла read.py у меня есть процедура вызова базы данных. Итак, я хочу сделать то же самое, но без python:

Process process;
process.begin("mysql");
process.addParameter("-u root -parduino --database arduino -e \"select process('my_text')\"");
process.run();

Как вы понимаете, этот пример кода не работает. Но тот же скрипт Mysql работает отлично и намного быстрее, чем при использовании python, если я запускаю его через консоль.


person Nur4I    schedule 12.11.2014    source источник
comment
@vks можешь объяснить подробнее? или привести примеры?   -  person Nur4I    schedule 12.11.2014
comment
@vks Спасибо, я разобрался, и теперь это работает. Но, к сожалению, это также медленнее, чем прямой вызов mysql. Можно ли его настроить для более быстрой работы?   -  person Nur4I    schedule 12.11.2014
comment
какой ты пробовал?   -  person vks    schedule 12.11.2014
comment
@vks :) на самом деле был комментарий о подпроцессе. Итак, я попытался использовать подпроцесс   -  person Nur4I    schedule 12.11.2014
comment
@vks Могу ли я вызвать команду mysql непосредственно со стороны Arduino, а не с Python?   -  person Nur4I    schedule 12.11.2014
comment
@vks Да, конечно. Мне помогло решить мою проблему   -  person Nur4I    schedule 12.11.2014
comment
Не знаю про ардуино :(   -  person vks    schedule 12.11.2014


Ответы (2)


Попробуйте Process.runShellCommand. Он примет ваше полное утверждение в качестве аргумента:

Process process;
process.runShellCommand("mysql -u root -parduino --database arduino -e \"select process('my_text')\"");
person Sam    schedule 27.12.2014

Вы можете использовать модуль subprocess.

https://docs.python.org/2/library/subprocess.html

Используя это, вы можете отправлять свои команды mysql на терминал, как если бы они отправлялись напрямую через скрипт python.

person vks    schedule 12.11.2014