2012-01-31 47 views
9

我開始使用org模式,並且有一些我想要做的事情,好像應該可以,但我很難搞清楚。使源代碼從一個代碼塊輸入到Emacs org模式中的另一個代碼塊

讓我來描述一下場景:我有一些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 

然後我有蟒蛇一個代碼塊調用函數:

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

#+END_SRC 

我可能用它來創建表格,進一步處理,繪圖等。注意<< >>的事情是不正確的,顯然---這只是一種濫用符號來表明我正在嘗試做什麼。

+2

你可以看一下[此論文](http://www.jstatsoft.org/v46/i03),見[本博文](http://irreal.org/blog/?p=653)。 – Daimrod 2012-01-31 08:41:39

回答

7

如果您已設置的emacs /組織模式,使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 

我的Python是有點生疏,但至少,如果我糾結這

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

    """ 
query_status = sql_helper.run_query(query) 

蟒蛇也​​不再抱怨的語法,而是缺少模塊sql_helper ...

+0

完美工作 - 謝謝! – 2012-01-31 17:09:47

相關問題