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

plpython3uプロシージャ内でPythonパッケージをインポートするときにモジュールが見つかりません

    PGDATAのような他の環境変数に加えて シェルスクリプト(pg_service.sh)で、PYTHONPATH='/path/to/python:/path/to/your/module'を設定します

    例えば。 cat /Users/postgres/pg_service.sh

    export PGDATABASE=postgres
    export PGUSER=postgres
    export PGPORT=5432
    export PATH=/Library/PostgreSQL/11/bin:$PATH
    export PGLOCALEDIR=/Library/PostgreSQL/11/share/locale
    export PYTHONUSERBASE=/Users/postgres/packaging_tutorial
    export PYTHONPATH=/Library/edb/languagepack-11/Python-3.6:$PYTHONUSERBASE
    pg_ctl -D /Library/PostgreSQL/11/data -l /Users/postgres/logfile $1
    

    サーバーを起動します:

    > sudo -u postgres /Users/postgres/pg_service.sh start
    waiting for server to start.... done
    server started 
    

    /Users/postgres/packaging_tutorial/example_pkg/__init__.py

    def retpy3():
        return 7/5
    

    pg関数:

    CREATE OR REPLACE FUNCTION expy3()
    RETURNS text
    LANGUAGE plpython3u
    AS $$
    import example_pkg
    return example_pkg.retpy3()
    $$;
    

    出力

    psql  -c 'select * from expy3()';
     expy3
    --------
     1.4
    



    1. 「IF EXISTS... UPDATE .. ELSE .. INSERT」を使用する危険と、代替手段は何ですか?

    2. 2つの異なる日付から年の違いを取得するにはどうすればよいですか?

    3. MySqlでIN句を使用する別のアプローチ

    4. PDOMySQLを使用して2つのテーブルに挿入します