Сделайте исходный код из одного блока кода вводом для другого блока кода в организационном режиме Emacs.

Я только начинаю работать с org-mode, и мне хотелось бы сделать кое-что, что кажется возможным, но мне трудно понять.

Позвольте мне описать сценарий: у меня есть код SQL, который я хочу выполнить на удаленном сервере. В настоящее время у меня есть скрипт Python, который принимает код SQL в виде строки и делает это для меня. Без организационного режима мой рабочий процесс должен был бы начинаться с такого файла:

echo "SELECT name, grade FROM students" >> basic_query.sql 

а затем я побежал:

$ python run_query.py basic_query.sql    

Чтобы сделать это в настройках организационного режима, я мог бы создать блок кода для SQL:

#+NAME: basic_query 
#+BEGIN_SRC SQL 
SELECT name, grade FROM students 

#+END_SRC 

И тогда у меня будет блок кода для функции вызова python:

#+BEGIN_SRC python :export results
import sql_helper 
query_status = sql_helper.run_query(<<basic_query>>)  

#+END_SRC 

Который я мог бы использовать для создания таблицы, дальнейшей обработки, построения графика и т. д. Обратите внимание, что << >>, очевидно, неправильный --- это просто злоупотребление обозначениями, чтобы указать, что я пытаюсь сделать.


person John Horton    schedule 31.01.2012    source источник
comment
Вы можете ознакомиться с этим документом, доступным в это сообщение в блоге.   -  person Daimrod    schedule 31.01.2012


Ответы (1)


Если вы настроили emacs/org-mode так, чтобы был включен код Python ((python . t) в org-babel-do-load-languages), вы почти у цели, я изменил ваш пример на

#+NAME: basic_query 
#+BEGIN_SRC SQL 
  SELECT name, grade FROM students 
#+END_SRC 

#+BEGIN_SRC python :export results :noweb yes :tangle yes
import sql_helper 
query = """
    <<basic_query>>
    """
query_status = sql_helper.run_query(query)  

#+END_SRC 

Мой питон немного ржавый, но, по крайней мере, если я запутаю его до

import sql_helper 
query = """
    SELECT name, grade FROM students 

    """
query_status = sql_helper.run_query(query)

python больше не жалуется на синтаксис, а на отсутствующий модуль sql_helper...

person Tom Regner    schedule 31.01.2012
comment
если бы basic_query было example вместо src, то #+BEGIN_SRC python :var query=basic_query сработало бы. - person jfs; 01.05.2021