PostgreSQL
 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 mungery, тъй като по подразбиране PATH не е наличен в plpython os.environ -activate_this.py има поправка, регистрирана това трябва да се превърти със следващото издание на точка (което трябва да бъде 1.11.7 или 1.12)

( взети предимно от 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. Сумирайте до достигане на праговата стойност и след това нулирайте брояча

  2. Импортиране на дъмп на postgresql в Heroku

  3. Какво прави ::в PostgreSQL?

  4. актуализиране на редовете на таблицата в postgres с помощта на подзаявка

  5. PostgreSQL COPY csv, включително цитати