2012-01-31 19 views
9

Ho iniziato con org-mode e c'è qualcosa che mi piacerebbe fare che sembra dovrebbe essere possibile, ma io sto avendo problemi a capire.Rendi il codice sorgente da un blocco di codice l'ingresso ad un altro blocco di codice in Emacs org-mode

Lasciami descrivere lo scenario: ho un codice SQL che voglio eseguire su un server remoto. Al momento ho uno script python che prende il codice SQL come una stringa e fa questo per me. Senza org-mode, il mio flusso di lavoro potrebbe essere quella di iniziare con un file in questo modo:

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

e poi mi piacerebbe correre:

$ python run_query.py basic_query.sql  

per farlo è nell'impostazione org-mode, potrei creare un blocco di codice per lo SQL:

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

#+END_SRC 

E poi mi piacerebbe avere un blocco di codice per il pitone funzione di chiamata:

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

#+END_SRC 

Che potrei usare per creare una tabella, elaborare ulteriormente, tracciare, ecc. Notare che la cosa << >> non è corretta, ovviamente --- è solo un abuso di notazione per indicare ciò che sto cercando di fare.

+2

potete guardare [questo paper] (http://www.jstatsoft.org/v46/i03), visto in [questo blogpost] (http://irreal.org/blog/?p=653). – Daimrod

risposta

7

Se è stato impostato emacs/org-mode in modo che il codice python è abilitata ((python . t) in org-babel-do-load-languages), siete quasi arrivati, ho cambiato il vostro esempio a

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

mio pitone è un po 'arrugginito, ma almeno se groviglio che questo

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

    """ 
query_status = sql_helper.run_query(query) 

pitone non più lamentarsi della sintassi, ma circa lo sql_helper modulo mancante ...

+0

ha funzionato perfettamente - grazie! –

Problemi correlati