sql >> Databáze >  >> RDS >> PostgreSQL

PostgreSQL PL/Python:volání uložené procedury ve virtualenv

Existuje způsob, jak to udělat, jak se ukázalo. Od verze 1.6 nebo přibližně tak přichází virtualenv se skriptem activate_this.py , který lze použít k nastavení existujícího interpreta pro přístup k danému virtuálnímu prostředí.

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

A jako plně realizovaná funkce 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

(Je zapotřebí další nástroje PATH, protože ve výchozím nastavení není PATH k dispozici v plpython os.environ -activate_this.py má oprava zapsána to by se mělo hodit s dalším bodovým uvolněním (což by mělo být 1.11.7 nebo 1.12)

(převzato převážně z https://gist.github.com/dmckeone/69334e2d8b27f586414a )



  1. Uložit výpočet do kódu nebo databáze?

  2. Jak zkontrolovat, zda kurzor vrací nějaké záznamy v oracle?

  3. Jak ručně vložit hodnotu do sloupce identity v tabulce SQL Server - SQL Server / Výukový program T-SQL, část 41

  4. SQL dotaz; horizontální až vertikální