PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

PostgreSQL PL / Python:gọi thủ tục được lưu trữ trong virtualenv

Có một cách để làm điều đó, vì nó hóa ra. Kể từ phiên bản 1.6 trở về trước, virtualenv đi kèm với một tập lệnh activate_this.py , có thể được sử dụng để thiết lập một trình thông dịch hiện có để truy cập vào virtualenv cụ thể đó.

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

Và như một chức năng plpython được thực hiện đầy đủ:

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

(Cần bổ sung thêm PATH vì PATH theo mặc định không khả dụng trong plpython os.environ -activate_this.py có sửa lỗi đã đăng ký sẽ cuộn với bản phát hành điểm tiếp theo (phải là 1.11.7 hoặc 1.12)

(được lấy chủ yếu từ 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. Cách Atan () hoạt động trong PostgreSQL

  2. Nhóm theo ngày ngắn trong JPA

  3. Sử dụng giá trị hàng làm cột trong PostgreSQL

  4. Laravel 5 với Postgres SQL

  5. PostgreSQL:Số lượng bảng tối đa có thể lưu trữ trong cơ sở dữ liệu postgreSQL là bao nhiêu?