2012-01-31 19 views
9

girişindeki başka bir kod bloğuna engelleyin. Org modunu kullanmaya başladım ve yapmak istediğim bir şey var gibi görünüyor, ama ben Anlamakta zorlanıyorum.Kaynak kodunu bir koddan Emacs org modunda

Senaryoyu açıklayalım: Uzak bir sunucuda çalıştırmak istediğim bazı SQL kodlarım var. Şu anda SQL kodunu bir dize olarak alan ve bunu benim için yapan bir python betiğim var.

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

ve sonra kaçardım: org-mod olmadan, benim iş akışı şöyle bir dosya ile başlamak olacaktır

$ python run_query.py basic_query.sql  

bu org-mod ayarında olduğunu yapmak için, Ben SQL için bir kod bloğu oluşturabilirsiniz:

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

#+END_SRC 

sonra fonksiyonu çağıran piton için bir kod bloğu olurdu:

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

#+END_SRC 

Bir tablo oluşturmak, daha fazla işlem yapmak, çizim yapmak için kullanabileceğim vb. << >> öğesinin anlamı doğru değil, açıkçası --- sadece ne yapmaya çalıştığımı göstermek için notasyonun kötüye kullanılması. Eğer emacs'ı python'un kodu etkindir böylece/org-modu (org-babel-do-load-languages içinde (python . t)) kurduysanız

+2

Bunu [bu bakabilirsiniz []] [bu blog yazısı] 'nda (http://irreal.org/blog/?p=653) görüldüğü gibi] (http://www.jstatsoft.org/v46/i03). – Daimrod

cevap

7

, neredeyse orada, ben

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

Benim piton biraz paslanmış için örnek değişti ama en azından artık sözdizimi hakkında şikayet etmez

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

    """ 
query_status = sql_helper.run_query(query) 

piton bu kavga, ama eğer eksik modül sql_helper hakkında ...

+0

Mükemmel çalışır - teşekkürler! –