复杂程序转义

时间:2013-08-20 08:57:44

标签: python bash postgresql fabric

我有一个fabfile,我想运行一个命令来创建一个postgres数据库。

SQL请求是:

CREATE DATABASE "dbname"
WITH ENCODING = 'UTF8'
     LC_COLLATE = 'en_US.UTF8'
     LC_CTYPE = 'en_US.UTF8'
     TEMPLATE = template0 
     OWNER = "dbowner";

我想使用以下方式运行它:

from fabric.api import run
run("""sudo su postgres --command "psql -c 'REQUEST HERE'" """)

但我找不到任何以正确的方式逃避它的方法。

你知道我该怎么办吗?

2 个答案:

答案 0 :(得分:1)

好的,我终于这样做了:

run('sudo su postgres --command \'psql -e -c "CREATE DATABASE peopleask WITH ENCODING = \'"\'"\'UTF8\'"\'"\' LC_COLLATE = \'"\'"\'en_US.UTF8\'"\'"\' LC_CTYPE = \'"\'"\'en_US.UTF8\'"\'"\' TEMPLATE = template0 OWNER = peopleask;"\'')

答案 1 :(得分:0)

使用\以双引号字符串转义双引号,并使用单引号字符串中的单引号。