PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

STWÓRZ JĘZYK plpython3u – PostgreSQL 9.6

To jeden z najszybszych blogów, jakie publikuję :). Publikuję z mojego terminala, tak jak w przypadku moich testów, aby utworzyć język plpython3u.

Korzystając z zaufanych lub niezaufanych dystrybucji Pythona, możemy stworzyć język plpython3u w PostgreSQL. W moich testach próbuję z dystrybucją SCL (nie polecam, próbowałem do testowania) python3.3, aby stworzyć język plpython3u.

Zacznijmy tworzyć język na binarnej wersji instalacji PostgreSQL 9.6 bez żadnych poprawek.

-bash-4.2$ psql
psql.bin (9.6.4)
Wpisz „pomoc”, aby uzyskać pomoc.

postgres=# CREATE LANGUAGE plpython3u;
BŁĄD:nie można załadować biblioteki „/opt/PostgreSQL/9.6/lib/postgresql/plpython3.so”:libpython3.3m.so.1.0:nie można otworzyć udostępnionego pliku obiektu:Brak takiego plik lub katalog

Hmmm, „/opt/PostgreSQL/9.6/lib/postgresql/plpython3.so” szukam biblioteki „libpython3.3m.so.1.0”. Aby potwierdzić, uruchom polecenie „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 => nie znaleziono
libc.so.6 => /lib64/libc.so.6 (0x00007fe75e42f000)
/lib64/ld-linux-x86-64.so. 2 (0x00007fe75ea27000)

Teraz jasne jest, że potrzebujemy libpython3.3m.so.1.0 do stworzenia języka plpython3u.

Zacznijmy jako użytkownik root, aby zainstalować python3.3 z repozytorium SCL, włączając go.

#yum zainstaluj centos-release-scl
#yum zainstaluj python33

Po zainstalowaniu znajdź bibliotekę „libpython3.3m.so.1.0” wymaganą przez plpython3.so

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

Fajny. Aby użyć pakietu Python3, przełącz się jako użytkownik postgres i ustaw zmienną środowiskową PYTHONPATH, PYTHONHOME, PATH i LD_LIBRARY_PATH.

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

Spróbuj ponownie uruchomić „ldd” na „/opt/PostgreSQL/9.6/lib/postgresql/plpython3.so”, aby sprawdzić, czy biblioteki zostały prawidłowo wybrane.

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

Ładny. Jesteśmy gotowi. Zrestartujmy serwer i stwórzmy język plpython3u.

-bash-4.2$ restart pg_ctl
Uruchamianie serwera

-bash-4.2$ psql
psql.bin (9.6.4)
Wpisz „help”, aby uzyskać pomoc.

postgres=# UTWÓRZ JĘZYK plpython3u;
UTWÓRZ JĘZYK

Bardzo fajnie… Ostatni krok, przetestujmy język plpython3u, tworząc przykładową funkcję.

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)

Dobry. Miłej zabawy!!

Ragawa


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zainstaluj Postgres.app na komputerze Mac

  2. SQL Wypełnij tabelę z losowymi danymi

  3. Limit rozmiaru typu danych JSON w PostgreSQL

  4. Jak Mod() działa w PostgreSQL

  5. Próbuję skopiować plik, ale pojawia się komunikat o błędzie