2012-01-31 26 views
9

Tôi đang bắt đầu với chế độ org và có điều tôi muốn làm có vẻ như nó có thể thực hiện được, nhưng tôi đang gặp khó khăn trong việc tìm ra.Làm cho mã nguồn từ một khối mã đầu vào thành một khối mã khác trong chế độ org Emacs

Hãy để tôi mô tả kịch bản: Tôi có một số mã SQL mà tôi muốn thực thi trên máy chủ từ xa. Tôi hiện đang có một kịch bản python có mã SQL như một chuỗi và làm điều này cho tôi. Nếu không có org-mode, luồng công việc của tôi sẽ bắt đầu với một tập tin như vậy:

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

và sau đó tôi muốn chạy:

$ python run_query.py basic_query.sql  

Để làm điều này là trong bối cảnh org-mode, tôi có thể tạo ra một khối mã cho SQL:

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

#+END_SRC 

Và sau đó tôi muốn có một khối mã cho python gọi hàm:

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

#+END_SRC 

Mà tôi có thể sử dụng để tạo bảng, xử lý thêm, âm mưu v.v. Lưu ý rằng điều << >> không đúng, rõ ràng --- đó chỉ là lạm dụng ký hiệu để cho biết tôi đang cố làm gì.

+2

Bạn có thể nhìn vào [này paper] (http://www.jstatsoft.org/v46/i03), được thấy trong [blogpost này] (http://irreal.org/blog/?p=653). – Daimrod

Trả lời

7

Nếu bạn đã thiết lập emacs/org-mode để mã python được kích hoạt ((python . t) trong org-babel-do-load-languages), bạn đang ở gần đó, tôi đã thay đổi ví dụ của bạn để

#+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 của tôi là một chút gỉ, nhưng ít nhất nếu tôi rối này để

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

    """ 
query_status = sql_helper.run_query(query) 

python nào không còn phàn nàn về cú pháp, nhưng về các module sql_helper thiếu ...

+0

Làm việc hoàn hảo - cảm ơn! –

Các vấn đề liên quan