sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQL PL / Python:virtualenvでストアドプロシージャを呼び出す

    結局のところ、それを行う方法があります。バージョン1.6以降、virtualenvにはスクリプトactivate_this.pyが付属しています 、特定のvirtualenvにアクセスするために既存のインタープリターをセットアップするために使用できます。

    exec(open('/Some/VirtualEnv/Directory/myvirtualenv/bin/activate_this.py').read(), 
    dict(__file__='/Some/VirtualEnv/Directory/myvirtualenv/bin/activate_this.py'))
    

    そして、完全に実現されたplpython関数として:

    CREATE OR REPLACE FUNCTION workon(venv text)
      RETURNS void AS
    $BODY$
        import os
        import sys
    
        if sys.platform in ('win32', 'win64', 'cygwin'):
            activate_this = os.path.join(venv, 'Scripts', 'activate_this.py')
        else:
            if not os.environ.has_key('PATH'):
                import subprocess
                p=subprocess.Popen('echo -n $PATH', stdout=subprocess.PIPE, shell=True)
                (mypath,err) = p.communicate()
                os.environ['PATH'] = mypath
    
            activate_this = os.path.join(venv, 'bin', 'activate_this.py')
    
        exec(open(activate_this).read(), dict(__file__=activate_this))
    $BODY$
    LANGUAGE plpythonu VOLATILE
    

    (デフォルトではPATHはplpython os.environで使用できないため、追加のPATHマンガリーが必要です。-activate_this.pyには修正がチェックインされました 次のポイントリリース(1.11.7または1.12である必要があります)でロールする必要があります

    (主にhttps://gist.github.com/dmckeone/69334e2d8b27f586414a から取得 )



    1. DATETIMEをmysqlでDATEとしてキャストする方法は?

    2. SQLServerでの呼び出しストアドプロシージャを確認します

    3. MySQLで重複レコードのみを選択して表示する

    4. json_encodeが何も返さない