在Python中创建扩展postgis

时间:2017-11-22 02:54:36

标签: python postgis

Python 2.7

if __name__ == '__main__':
    import os
    app = Flask(__name__)
    os.system("dropdb biobreak")
    os.system("createdb biobreak")
    os.system("CREATE EXTENSION postgis")

在最后一行我收到此错误:

(env)vagrant @ vagrant:biobreak $ python seed.py

sh:1:创建:未找到

我尝试通过语法导入子进程让我发疯。

编辑:

我尝试了以下命令:

import subprocess
    cr_ext = "create extension postgis;"
    try:
        subprocess.check_call([
                'psql', '-q',
                '-U', 'vagrant',
                '-f', 'cr_ext',
                'biobreak'
            ])
    except subprocess.CalledProcessError, ex:
        print "Failed to invoke psql: {}".format(ex)

出现此错误:

cr_ext:没有这样的文件或目录 无法调用psql:命令'['psql',' - q',' - U','vagrant',' - f','cr_ext','biobreak']'返回非零退出状态1

1 个答案:

答案 0 :(得分:0)

好的,我明白了。我的命令不是变量,而是需要在文件中。因此,No文件或目录错误消息。 cr_ext.sql => '创建扩展postgis;'

以下是工作代码:

import subprocess
try:
    subprocess.check_call([
        'psql', '-q',
        '-U', 'vagrant',
        '-f', '/home/vagrant/src/projects/biobreak/cr_ext.sql',
        'biobreak'
    ])
except subprocess.CalledProcessError, ex:
    print "Failed to invoke psql: {}".format(ex)