2012-01-31 28 views
9

Estoy comenzando con org-mode y hay algo que me gustaría hacer que parece que debería ser posible, pero Tengo problemas para descubrirlo.Hacer que el código fuente de un código bloquee la entrada a otro bloque de código en Emacs org-mode

Déjenme describir el escenario: Tengo un código SQL que quiero ejecutar en un servidor remoto. Actualmente tengo un script de Python que toma el código SQL como una cadena y lo hace por mí. Sin org-mode, mi flujo de trabajo sería comenzar con un archivo de este modo:

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

y luego había corrido:

$ python run_query.py basic_query.sql  

Para hacer esto se encuentra en la configuración del modo de org, podría crear un bloque de código para el SQL:

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

#+END_SRC 

Y luego tendría un bloque de código para el pitón función que llama:

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

#+END_SRC 

Que podría usar para crear una tabla, procesar más lejos, trazar etc. Tenga en cuenta que << >> no está bien, obviamente --- es solo un abuso de notación para indicar lo que estoy tratando de hacer.

+2

Usted puede mirar en [este paper] (http://www.jstatsoft.org/v46/i03), visto en [este blogpost] (http://irreal.org/blog/?p=653). – Daimrod

Respuesta

7

Si ha establecido emacs/org-mode para que el código Python está activado ((python . t) en org-babel-do-load-languages), que está casi allí, me hizo cambiar de ejemplo para

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

Mi pitón es un poco oxidado, pero al menos si me enredo que esto

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

    """ 
query_status = sql_helper.run_query(query) 

pitón no ya no se quejan de la sintaxis, sino de la sql_helper módulo ausente ...

+0

Funcionó perfectamente, ¡gracias! –

Cuestiones relacionadas