2012-01-31 8 views
9

Rozpoczęłam pracę w trybie org. Jest coś, co chciałbym zrobić, ale wydaje się, że powinno być możliwe, ale ja Mam problem z wymyśleniem.Utwórz kod źródłowy z jednego kodu, blokuj dane wejściowe na inny blok kodu w trybie emacs org.

Pozwolę sobie opisać scenariusz: Mam trochę kodu SQL, który chcę wykonać na zdalnym serwerze. Obecnie mam skrypt Pythona, który przyjmuje kod SQL jako ciąg i robi to dla mnie. Bez org-mode, mój przepływu pracy byłoby zacząć z plikiem tak:

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

a potem bym uruchomić:

$ python run_query.py basic_query.sql  

Aby zrobić to w ustawieniach org-mode, mógłbym stworzyć blok kodu dla SQL:

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

#+END_SRC 

a potem mam blok kodu dla pytona funkcja dzwoni:

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

#+END_SRC 

Którą mogę użyć do utworzenia tabeli, dalszego przetwarzania, fabuły itd. Zauważ, że rzecz << >> jest niewłaściwa, oczywiście - jest to tylko nadużycie notacji, które wskazuje, co próbuję zrobić.

+2

Możesz zajrzeć na [ten paper] (http://www.jstatsoft.org/v46/i03), widziane w [tym blogu] (http://irreal.org/blog/?p=653). – Daimrod

Odpowiedz

7

Jeśli skonfigurować emacs/org-mode więc jest włączona, że ​​kod python ((python . t) w org-babel-do-load-languages), jesteś prawie tam, zmieniłem swój przykład do

#+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 

Mój pyton jest trochę zardzewiały, ale przynajmniej jeśli plączą to

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

    """ 
query_status = sql_helper.run_query(query) 

pyton nie ma już narzekać składni, ale o brakującym module sql_helper ...

+0

Działa doskonale - dzięki! –

Powiązane problemy