sql >> Databáze >  >> RDS >> PostgreSQL

VYTVOŘIT JAZYK plpython3u – PostgreSQL 9.6

Toto je jeden z nejrychlejších blogů, které publikuji :). Publikuji ze svého terminálu stejně jako své testování pro vytvoření jazyka plpython3u.

Pomocí důvěryhodných nebo nedůvěryhodných distribucí pythonu můžeme vytvořit jazyk plpython3u v PostgreSQL. Při testování se pokouším s distribucí SCL (nedoporučuji, zkoušel jsem to otestovat) python3.3 vytvořit jazyk plpython3u.

Začněme vytvářet jazyk na binární verzi instalace PostgreSQL 9.6 bez jakéhokoli ladění.

-bash-4.2$ psql
psql.bin (9.6.4)
Nápovědu získáte zadáním „nápověda“.

postgres=# CREATE LANGUAGE plpython3u;
CHYBA:nelze načíst knihovnu „/opt/PostgreSQL/9.6/lib/postgresql/plpython3.so“:libpython3.3m.so.1.0:nelze otevřít soubor sdíleného objektu:Žádný takový soubor nebo adresář

Hmmm, „/opt/PostgreSQL/9.6/lib/postgresql/plpython3.so“ hledá knihovnu „libpython3.3m.so.1.0“. Pro potvrzení spusťte příkaz „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 => nenalezeno
libc.so.6 => /lib64/libc.so.6 (0x00007fe75e42f000)
/lib64/ld-linux-x86-64.so. 2 (0x00007fe75ea27000)

Nyní je jasné, že k vytvoření jazyka plpython3u potřebujeme libpython3.3m.so.1.0.

Začněme jako uživatel root instalovat python3.3 z repozitáře SCL tím, že jej povolíme.

#yum install centos-release-scl
#yum install python33

Po instalaci najděte knihovnu „libpython3.3m.so.1.0“, kterou vyžaduje plpython3.so

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

Chladný. Chcete-li použít přepínač bundle Python3 jako uživatel postgresu a nastavit proměnnou prostředí PYTHONPATH, PYTHONHOME, PATH a 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$ export LD_LIBRARY_PATH=/opt/rh/python33/root/usr/lib64:$LD_LIBRARY_PATH
-bash-4.2$ export PATH=$PYTHONPATH:$PATH

Zkuste znovu spustit „ldd“ na „/opt/PostgreSQL/9.6/lib/postgresql/plpython3.so“, abyste zkontrolovali, zda jsou knihovny správně vybrány.

-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/libc.so. 6 (0x00007fd31be2d000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fd31bc11000)
libdl.so.2 => /lib64libutil.so.1 => /lib64/libutil.so.1 (0x00007fd31b809000)
libm.so.6 => /lib64/libm.so.6 (0x00007fd31b507000)
/lib64/ld -linux-x86-64.so.2 (0x00007fd31c89c000)

Pěkný. Všichni jsme připraveni. Restartujeme server a vytvoříme jazyk plpython3u.

-bash-4.2$ pg_ctl restart
spouštění serveru

-bash-4.2$ psql
psql.bin (9.6.4)
Nápovědu získáte zadáním „help“.

postgres=# VYTVOŘIT JAZYK plpython3u;
VYTVOŘIT JAZYK

Velmi pěkné… Poslední krok, otestujte jazyk plpython3u vytvořením ukázkové funkce.

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)

Dobrý. Užijte si to!!

Raghav


  1. SQL Server 2016:Import dat

  2. Jak extrahovat dvě po sobě jdoucí číslice z textového pole v MySQL?

  3. Klientské a síťové komponenty Oracle nebyly nalezeny

  4. 2 způsoby, jak vrátit všechny uživatelem definované funkce v databázi SQL Server