Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 复杂程序转义_Python_Bash_Postgresql_Fabric - Fatal编程技术网

Python 复杂程序转义

Python 复杂程序转义,python,bash,postgresql,fabric,Python,Bash,Postgresql,Fabric,我有一个文件,我想运行一个命令来创建一个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("""sud

我有一个文件,我想运行一个命令来创建一个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'" """)
但我找不到任何办法以正确的方式逃离它


你知道我该怎么做吗?

使用
\
在双引号字符串中转义双引号,在单引号字符串中转义单引号。

好的,我终于这样做了:

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;"\'')

您不能将SQL保存到文件中吗?第一步我可以这样做:
psql-c“创建数据库dbname WITH ENCODING='UTF8'LC\u COLLATE='en\u US.UTF8'LC\u CTYPE='en\u US.UTF8'TEMPLATE=template0 OWNER=dbowner;”
然后我可以这样做:
sudo su postgres--command“psql-e-c”使用ENCODING='UTF8'LC_COLLATE='en_US.UTF8'LC_CTYPE='en_US.UTF8'TEMPLATE=template0 OWNER=dbowner创建数据库dbname\“
那么我就不知道该怎么做了:这不起作用:
运行(““sudo su postgres--command”psql-e-c\\”创建数据库dbname WITH ENCODING='UTF8'LC\u COLLATE='en\u US.UTF8'LC\u CTYPE='en\u US.UTF8'TEMPLATE=template0 OWNER=dbowner;\\”)
而且这也不起作用:运行('sudo su postgres--command'psql-e-c\\\“使用编码创建数据库dbname='UTF8'LC\u-COLLATE='en\u-US.UTF8'LC\u-CTYPE='en\u-US.UTF8'TEMPLATE=template0-OWNER=dbowner;\\\”“”)