2017-11-22 20 views
0

に拡張したPostGISを作成のPython 2.7 Pythonの

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

私はこのエラーを取得する:

(ENV)放浪する@浮浪者:biobreak $ pythonのseed.py

SH:1 :CREATE:見つからない

私は文法でサブプロセスをインポートしようとしましたが、私は狂ってしまいました。

はEDIT:

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を起動できませんでした。そのようなファイルやディレクトリ :COMMAND '[' psqlの

は、私は、次のコマンドを試してみました、 '-q'、 '-U'、 'vagrant'、 '-f'、 'cr_ext'、 'biobreak'] 'は0以外の終了ステータスを返す1

答えて

0

これはうまくいきました。変数の代わりに、私のコマンドはファイル内にある必要があります。したがって、ファイルまたはディレクトリがありませんというエラーメッセージが表示されます。 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)