sql >> Database teknologi >  >> RDS >> PostgreSQL

OPRET SPROG plpython3u – PostgreSQL 9.6

Dette er en af ​​de hurtigste blogs jeg udgiver :). Jeg udgiver fra min terminal, som det er min test for at skabe sprog plpython3u.

Ved at bruge betroede eller upålidelige distributioner af python kan vi oprette plpython3u-sprog i PostgreSQL. I min test prøver jeg med SCL-distribution (kan ikke anbefale, jeg prøvede at teste) af python3.3 for at skabe sprog plpython3u.

Lad os begynde at skabe sprog på en binær version af PostgreSQL 9.6-installationen uden nogen justeringer.

-bash-4.2$ psql
psql.bin (9.6.4)
Skriv "hjælp" for at få hjælp.

postgres=# OPRET SPROG plpython3u;
FEJL:kunne ikke indlæse biblioteket “/opt/PostgreSQL/9.6/lib/postgresql/plpython3.so”:libpython3.3m.so.1.0:kan ikke åbne delt objektfil:Ingen sådan fil eller mappe

Hmmm, "/opt/PostgreSQL/9.6/lib/postgresql/plpython3.so" leder efter et bibliotek "libpython3.3m.so.1.0". For at bekræfte, kør kommandoen "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 => ikke fundet
libc.so.6 => /lib64/libc.so.6 (0x00007fe75e42f000)
/lib64/ld-linux-x86-64.so. 2 (0x00007fe75ea27000)

Nu er det klart, at vi har brug for libpython3.3m.so.1.0 for at skabe plpython3u sprog.

Lad os komme i gang som root-bruger for at installere python3.3 fra SCL repo ved at aktivere det.

#yum installer centos-release-scl
#yum installer python33

Efter installationen skal du finde et bibliotek "libpython3.3m.so.1.0", der kræves af plpython3.so

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

Fedt nok. For at gøre brug af Python3 bundle skift som en postgres-bruger og indstil miljøvariablen PYTHONPATH, PYTHONHOME, PATH og LD_LIBRARY_PATH.

-bash-4.2$ eksport PYTHONPATH=/opt/rh/python33/root/usr
-bash-4.2$ eksport PYTHONHOME=/opt/rh/python33/root/usr
-bash-4.2$ eksport LD_LIBRARY_PATH=/opt/rh/python33/root/usr/lib64:$LD_LIBRARY_PATH
-bash-4.2$ eksport PATH=$PYTHONPATH:$PATH

Prøv at køre "ldd" på "/opt/PostgreSQL/9.6/lib/postgresql/plpython3.so" igen for at kontrollere, at bibliotekerne er korrekt valgt.

-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 => /lib64/libdl.so.0000 (0x0001ba)<7f0001 />libutil.so.1 => /lib64/libutil.so.1 (0x00007fd31b809000)
libm.so.6 => /lib64/libm.so.6 (0x00007fd31b507000)
/lib64/ld -linux-x86-64.so.2 (0x00007fd31c89c000)

Pæn. Vi er alle klar. Lad os genstarte serveren og oprette sproget plpython3u.

-bash-4.2$ pg_ctl genstart
server starter

-bash-4.2$ psql
psql.bin (9.6.4)
Skriv "hjælp" for at få hjælp.

postgres=# OPRET SPROG plpython3u;
OPRET SPROG

Meget flot... Et sidste trin, lader teste plpython3u sprog ved at oprette en eksempelfunktion.

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)

Godt. God fornøjelse!!

Raghav


  1. Forbindelsestimeout for DriverManager getConnection

  2. NULL-værdier inde i NOT IN-sætningen

  3. Sådan rettes "MySQL ERROR 1819 (HY000):" i Linux

  4. Sådan ændres dato- og tidsformater i T-SQL