PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

PostgreSQL PL/Python:wywołanie procedury składowanej w virtualenv

Jak się okazuje, jest na to sposób. Od wersji 1.6 lub tam, virtualenv zawiera skrypt activate_this.py , którego można użyć do skonfigurowania istniejącego tłumacza, aby uzyskać dostęp do tego konkretnego środowiska wirtualnego.

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

A jako w pełni zrealizowana funkcja plpythona:

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

(Dodatkowa ścieżka PATH jest potrzebna, ponieważ domyślnie PATH nie jest dostępna w plpython os.environ -activate_this.py ma poprawka zaewidencjonowana które powinno się toczyć z następnym wydaniem punktu (którym powinien być 1.11.7 lub 1.12)

( pochodzi głównie z https://gist.github.com/dmckeone/69334e2d8b27f586414a )



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak sprawdzić, czy istnieje schemat PostgreSQL przy użyciu SQLAlchemy?

  2. Książka „Wysoka wydajność PostgreSQL 9.0” jest już dostępna

  3. Grib2 na raster PostGIS — czy ktoś ma to zadziałać?

  4. Spokojna baza danych postgres Api express

  5. Przywileje i bezpieczeństwo PostgreSQL — blokowanie schematu publicznego