PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

СЪЗДАВАНЕ НА ЕЗИК plpython3u – PostgreSQL 9.6

Това е един от най-бързите блогове, които публикувам :). Публикувам от моя терминал, както е моето тестване за създаване на език plpython3u.

Използвайки доверени или ненадеждни дистрибуции на python, можем да създадем език plpython3u в PostgreSQL. При моето тестване се опитвам с SCL дистрибуция (не препоръчвам, опитах за тестване) на python3.3 да създам език plpython3u.

Нека започнем да създаваме език на двоична версия на инсталацията на PostgreSQL 9.6 без никакво настройване.

-bash-4.2$ psql
psql.bin (9.6.4)
Въведете „help“ за помощ.

postgres=# СЪЗДАВАНЕ НА ЕЗИК plpython3u;
ГРЕШКА:не можа да се зареди библиотеката “/opt/PostgreSQL/9.6/lib/postgresql/plpython3.so”:libpython3.3m.so.1.0:не може да се отвори споделен обектен файл:Няма такъв файл или директория

Хммм, „/opt/PostgreSQL/9.6/lib/postgresql/plpython3.so“ търси библиотека „libpython3.3m.so.1.0“. За да потвърдите, изпълнете командата “ldd”

-bash-4.2$ cd /opt/PostgreSQL/9.6/lib/postgresql/
-bash-4.2$ ldd plpython3.so
linux-vdso.so.1 => (0x00007fff9db12000)
libpython3.3m.so.1.0 => не е намерен
libc.so.6 => /lib64/libc.so.6 (0x00007fe75e42f000)
/lib64/ld-linux-x86-64.so. 2 (0x00007fe75ea27000)

Сега е ясно, че имаме нужда от libpython3.3m.so.1.0, за да създадем език plpython3u.

Нека започнем като root потребител, за да инсталираме python3.3 от SCL репо, като го активираме.

#yum инсталирай centos-release-scl
#yum инсталирай python33

След инсталирането намерете библиотека „libpython3.3m.so.1.0“, изисквана от plpython3.so

[root@tools ~]# find / -name libpython3.3m.so.1.0/opt/rh/python33/root/usr/lib64/libpython3.3m.so.1.0

Готино. За да използвате превключвателя на пакета Python3 като потребител на postgres и задайте променливата на средата PYTHONPATH, PYTHONHOME, PATH и LD_LIBRARY_PATH.

-bash-4.2$ export PYTHONPATH=/opt/rh/python33/root/usr
-bash-4.2$ export PYTHONHOME=/opt/rh/python33/root/usr
-bash-4.2$ експорт LD_LIBRARY_PATH=/opt/rh/python33/root/usr/lib64:$LD_LIBRARY_PATH
-bash-4.2$ export PATH=$PYTHONPATH:$PATH

Опитайте отново да стартирате „ldd“ на „/opt/PostgreSQL/9.6/lib/postgresql/plpython3.so“, за да проверите дали библиотеките са правилно избрани.

-bash-4.2$ cd /opt/PostgreSQL/9.6/lib/postgresql/
-bash-4.2$ ldd plpython3.so
linux-vdso.so.1 => (0x00007fffe26ed000)
libpython3.3m.so.1.0 => /opt/rh/python33/root/usr/lib64/libpython3.3m.so.1.0 (0x00007fd31c205000)
libc.so.6 => /lib64/libli 6 (0x00007fd31be2d000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fd31bc11000)
libdl.so.2 => /lib64/libdl0000000000000000000 />libutil.so.1 => /lib64/libutil.so.1 (0x00007fd31b809000)
libm.so.6 => /lib64/libm.so.6 (0x00007fd31b507000)
/lib -linux-x86-64.so.2 (0x00007fd31c89c000)

Хубаво. Ние сме готови. Нека рестартираме сървъра и да създадем езика plpython3u.

-bash-4.2$ pg_ctl restart
сървърът стартира

-bash-4.2$ psql
psql.bin (9.6.4)
Въведете „help“ за помощ.

postgres=# СЪЗДАВАНЕ НА ЕЗИК plpython3u;
СЪЗДАВАНЕ НА ЕЗИК

Много хубаво... Една последна стъпка, позволява да тестваме езика plpython3u, като създадем примерна функция.

postgres=# CREATE OR REPLACE FUNCTION maxme (a integer, b integer) RETURNS integer AS
$$
if a > b:
return a
else
return b
$$ LANGUAGE plpython3u;
CREATE FUNCTION
postgres=# SELECT maxme(1, 2);
memax
-------
2
(1 row)

Добре. Насладете се!!

Рагхав


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Преглед на инструментите за диаграма на базата данни, налични за PostgreSQL

  2. Изявление на PostgreSQL IF

  3. Как да използвате функцията под низ в PostgreSQL и Redshift

  4. Как да вмъкнете в масив в PostgreSQL

  5. Как работи Floor() в PostgreSQL