11

我开始使用 org-mode 并且我想做的事情似乎应该是可能的,但我无法弄清楚。

让我描述一下这个场景:我有一些想要在远程服务器上执行的 SQL 代码。我目前有一个将 SQL 代码作为字符串并为我执行此操作的 python 脚本。如果没有 org-mode,我的工作流程将从这样的文件开始:

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

然后我会运行:

$ python run_query.py basic_query.sql    

为此,在 org-mode 设置中,我可以为 SQL 创建一个代码块:

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

#+END_SRC 

然后我有一个 python 调用函数的代码块:

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

#+END_SRC 

我可能会用它来创建表格、进一步处理、绘图等。注意<< >>事情是不对的,显然——这只是滥用符号来指示我正在尝试做的事情。

4

1 回答 1

9

如果您已经设置了 emacs/org-mode 以便启用 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 

我的蟒蛇有点生锈,但至少如果我把它缠在一起

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

    """
query_status = sql_helper.run_query(query)

python 不再抱怨语法,而是抱怨缺少模块 sql_helper...

于 2012-01-31T09:37:34.660 回答