Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.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
Postgres转储文件是在eclipse中构建的,使用的语言是python_Python_Postgresql - Fatal编程技术网

Postgres转储文件是在eclipse中构建的,使用的语言是python

Postgres转储文件是在eclipse中构建的,使用的语言是python,python,postgresql,Python,Postgresql,请参考下面的python代码,让我知道有什么错误或需要做什么才能使其正常工作 我面临的问题是,Eclipse被破坏,备份文件为空 import os import subprocess if __name__ == '__main__': print "test hello" localhost = 'localhost' port = '5432' role = 'serverdb_user' dump_dir = '/home/backupfile

请参考下面的python代码,让我知道有什么错误或需要做什么才能使其正常工作

我面临的问题是,Eclipse被破坏,备份文件为空

import os
import subprocess

if __name__ == '__main__':
    print "test hello"

    localhost = 'localhost'
    port = '5432'
    role = 'serverdb_user'
    dump_dir = '/home/backupfile/'
    db_username = 'empserverdb_user'
    db_names = 'emp1'

    try:
        bkp_file = 'backup1'
        file_path = os.path.join(dump_dir, bkp_file)
        print file_path
        dumper_cmd = ['pg_dump', '-h', localhost, '-p', port, '-U', db_username, '--role', role, '-W', '-Fc', '-v', '-f', file_path, db_names]
        print dumper_cmd
        subprocess.check_output(dumper_cmd)
    except subprocess.CalledProcessError, ex:
        print("Couldn't back up database {0}: pg_dump returned {1} with output {2}".format(db_names, ex.returncode, ex.output))
    except Exception, ex:
        print("Couldn't backup database {0}: unexpected error {1}".format(db_names, ex))
谢谢…

让我们开始。使用
sys.exc\u info
获取异常上下文,或者使用异常捕获在本地获取异常,例如
exception,例如:

此外,这里没有理由使用
shell=True
,也有很多理由不使用。如果您所处的平台(如Windows)没有适当的exec系统调用,则让
子流程
模块处理shell转义。将参数数组传递给
子流程
。这样做更容易正确,如果数据库名、文件路径、用户名或其他内容中有空格,那么您的程序仍然可以工作

最后,在较新的Python上使用
subprocess.check_call
,或者最好使用
check_output
。你没有检查通话结果,因此你不知道是否出了问题
check_output
将流程
stderr
存储在
CalledProcessException
output
字段中,便于报告错误

否则,使用
check_call
并使用
子流程
模块的I/O重定向功能将
pg_dump
输出写入文件。然后在错误中报告该文件名,以便用户可以查看它

类似于(未经测试):

首先。使用
sys.exc\u info
获取异常上下文,或者使用异常捕获在本地获取异常,例如
exception,例如:

此外,这里没有理由使用
shell=True
,也有很多理由不使用。如果您所处的平台(如Windows)没有适当的exec系统调用,则让
子流程
模块处理shell转义。将参数数组传递给
子流程
。这样做更容易正确,如果数据库名、文件路径、用户名或其他内容中有空格,那么您的程序仍然可以工作

最后,在较新的Python上使用
subprocess.check_call
,或者最好使用
check_output
。你没有检查通话结果,因此你不知道是否出了问题
check_output
将流程
stderr
存储在
CalledProcessException
output
字段中,便于报告错误

否则,使用
check_call
并使用
子流程
模块的I/O重定向功能将
pg_dump
输出写入文件。然后在错误中报告该文件名,以便用户可以查看它

类似于(未经测试):

首先。使用
sys.exc\u info
获取异常上下文,或者使用异常捕获在本地获取异常,例如
exception,例如:

此外,这里没有理由使用
shell=True
,也有很多理由不使用。如果您所处的平台(如Windows)没有适当的exec系统调用,则让
子流程
模块处理shell转义。将参数数组传递给
子流程
。这样做更容易正确,如果数据库名、文件路径、用户名或其他内容中有空格,那么您的程序仍然可以工作

最后,在较新的Python上使用
subprocess.check_call
,或者最好使用
check_output
。你没有检查通话结果,因此你不知道是否出了问题
check_output
将流程
stderr
存储在
CalledProcessException
output
字段中,便于报告错误

否则,使用
check_call
并使用
子流程
模块的I/O重定向功能将
pg_dump
输出写入文件。然后在错误中报告该文件名,以便用户可以查看它

类似于(未经测试):

首先。使用
sys.exc\u info
获取异常上下文,或者使用异常捕获在本地获取异常,例如
exception,例如:

此外,这里没有理由使用
shell=True
,也有很多理由不使用。如果您所处的平台(如Windows)没有适当的exec系统调用,则让
子流程
模块处理shell转义。将参数数组传递给
子流程
。这样做更容易正确,如果数据库名、文件路径、用户名或其他内容中有空格,那么您的程序仍然可以工作

最后,在较新的Python上使用
subprocess.check_call
,或者最好使用
check_output
。你没有检查通话结果,因此你不知道是否出了问题
check_output
将流程
stderr
存储在
CalledProcessException
output
字段中,便于报告错误

否则,使用
check_call
并使用
子流程
模块的I/O重定向功能将
pg_dump
输出写入文件。然后在错误中报告该文件名,以便用户可以查看它

类似于(未经测试):


也许您可以检查exec调用中的错误号(可能是路径中没有
pg_dump
)或postgres数据库中的错误日志(连接问题、授权、键入)。也许您可以检查exec调用中的错误号(可能是路径中没有
pg_dump
)或postgres数据库中的错误日志(连接问题、授权、打字错误)。也许您可以检查exec调用中的错误号(可能是路径中没有
pg_dump
)或postgres DB中的错误日志(连接问题,作者)
    try:
        bkp_file = 'backup1'
        file_path = os.path.join(dump_dir, bkp_file)
        dumper_cmd = ['pg_dump', '-h', localhost, '-p', port, '-U', db_username, '--role', role, '-W', '-Fc', '-v', '-f', file_path, db_name]
        subprocess.check_output(dumper_cmd)
    except subprocess.CalledProcessError, ex:
        print("Couldn't back up database {0}: pg_dump returned {1} with output {2}".format(db_name, ex.returncode, ex.output)
    except Exception, ex:
        print("Couldn't backup database {0}: unexpected error {1}".format(db_name, ex))