sql >> Databasteknik >  >> RDS >> PostgreSQL

SKAPA SPRÅK plpython3u – PostgreSQL 9.6

Detta är en av de snabbaste bloggarna jag publicerar :). Jag publicerar från min terminal som jag testar för att skapa språket plpython3u.

Genom att använda betrodda eller otillförlitliga distributioner av python kan vi skapa plpython3u-språk i PostgreSQL. I min testning försöker jag med SCL-distribution (rekommenderar inte, jag försökte testa) av python3.3 för att skapa språket plpython3u.

Låt oss börja skapa språk på en binär version av PostgreSQL 9.6-installationen utan några justeringar.

-bash-4.2$ psql
psql.bin (9.6.4)
Skriv "hjälp" för hjälp.

postgres=# SKAPA SPRÅK plpython3u;
FEL:kunde inte ladda biblioteket “/opt/PostgreSQL/9.6/lib/postgresql/plpython3.so”:libpython3.3m.so.1.0:kan inte öppna fil med delat objekt:Inget sådant fil eller katalog

Hmmm, "/opt/PostgreSQL/9.6/lib/postgresql/plpython3.so" letar efter ett bibliotek "libpython3.3m.so.1.0". För att bekräfta, kör kommandot "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 => hittades inte
libc.so.6 => /lib64/libc.so.6 (0x00007fe75e42f000)
/lib64/ld-linux-x86-64.so. 2 (0x00007fe75ea27000)

Nu är det klart att vi behöver libpython3.3m.so.1.0 för att skapa plpython3u-språk.

Låt oss komma igång som rootanvändare för att installera python3.3 från SCL repo genom att aktivera det.

#yum installera centos-release-scl
#yum installera python33

Efter installationen, hitta ett bibliotek "libpython3.3m.so.1.0" som krävs av plpython3.so

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

Häftigt. För att använda Python3-paketet byt som postgres-användare och ställ in miljövariabeln PYTHONPATH, PYTHONHOME, PATH och 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

Försök att köra "ldd" på "/opt/PostgreSQL/9.6/lib/postgresql/plpython3.so" igen för att kontrollera att biblioteken är korrekt valda.

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

Trevlig. Vi är redo. Låt oss starta om servern och skapa språket plpython3u.

-bash-4.2$ pg_ctl omstart
server startar

-bash-4.2$ psql
psql.bin (9.6.4)
Skriv "hjälp" för hjälp.

postgres=# SKAPA SPRÅK plpython3u;
SKAPA SPRÅK

Mycket trevligt... Ett sista steg, låter testa plpython3u-språket genom att skapa en exempelfunktion.

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)

Bra. Njut!!

Raghav


  1. Vad är schema i SQL Server och hur man skapar/släpper schema i SQL Server-databas - SQL Server / TSQL Tutorial Del 27

  2. Hur man genererar ett entity-relationship (ER) diagram med Oracle SQL Developer

  3. Hur man visar ett datum i tyskt format i SQL Server (T-SQL)

  4. PL/SQL:hur ber jag användarinmatning i en procedur?