PostgreSQL: jak dołączyć Pythona?

0

Witam, mam nadzieję, że znajdzie się tu ktoś kto pomoże mi z moim problem a mianowicie chciałabym dowiedzieć się jaką wtyczkę muszę zainstalować by w PostgreSQL używać języka Python oraz jak używać go już w trakcie pisania tzn. czy trzeba jakoś importować go, jeśli tak to w którym miejscu (tabela, baza czy inne miejsce?). Pozdrawiam.

1

i jeszcze napisz bidoku, że szukałaś i że nigdzie nie było... https://www.google.pl/search?q=postgres+python

0

szukałam i nie było nic konkretnego co mnie by interesowało. z racji tego, że to forum to chyba jakaś porażka i zaczyna umierać zdążyłam się doinformować jaka wtyczka itd tylko, że to nadal nie działa, postgres wypluwa, że nie używa tego języka, języki dostępne są w pliku, chcę użyć tego z pliku a i tak nie działa.

0
Nemesis napisał(a):

z racji tego, że to forum to chyba jakaś porażka i zaczyna umierać zdążyłam się doinformować jaka wtyczka

To nie forum jest porażką... I jeszcze bardzo daleko mu do jakiegokolwiek umierania... Podstawą jest szukanie samodzielne informacji, bardziej sensowne jest zajrzenie do dokumentacji niż pytanie na ślepo na forum w niekonkretny sposób.

Nemesis napisał(a):

postgres wypluwa, że nie używa tego języka, języki dostępne są w pliku, chcę użyć tego z pliku a i tak nie działa.

A nie uważasz, że to w sam raz do poszukania informacja w dokumentacji postgresa niż psioczenie na forum :]

0

Chyba jeszcze nikt z was geniusze nie wpadł na jedną rzecz - czytanie dokumentacji by znaleźć jedno zdanie zajmuje dużo czasu, nie jest to zbyt ooptymalny algorytm wyszukiwania gdy człowiek się śpieszy bo musi to zrobić na już, teraz. Odpowiedź kogoś z kompetencjami zajmuje chwilę, ale z tego co widzę, jest to kolejne forum gdzie ludzie wyjeżdżają z hejtami typu: google nie boli. Sorry za słownictwo ale chyba trzeba być idiotą by czekać wieczność na odpowiedź w stylu użytkownika wyżej czyli kolejne google nie boli. Jakbym była zdania jedynie na wasze forum to pewnie zatrzymałabym się w podstawówce na mnożeniu pod kreskę. Przykre, że kolejne forum schodzi na psy przez ludzi którzy wolą marnować swój czas na hejty zamiast na to do czego forum służy. (do Admina: możecie mi nawet konto za to wywalić, nie będę płakać z tego powodu - bez pozdrowień, zirytowana użytkowniczka)

0
Nemesis napisał(a):

Chyba jeszcze nikt z was geniusze nie wpadł na jedną rzecz - czytanie dokumentacji by znaleźć jedno zdanie zajmuje dużo czasu, nie jest to zbyt ooptymalny algorytm wyszukiwania gdy człowiek się śpieszy bo musi to zrobić na już, teraz.

Czytanie dokumentacji to podstawa, pytanie o rzeczy podstawowe to profanacja ;) Żal Ci czasu na dokumentację, na szukanie w google? Sądzisz, że tu w każdej chwili siedzą specjaliści od każdej rzeczy? Zobacz ile tematów dostaje odpowiedzi... Ale w niektórych nawet odpowiadający musieliby sięgać do dokumentacji, żeby odpowiedzieć... Za Ciebie?

Nemesis napisał(a):

Odpowiedź kogoś z kompetencjami zajmuje chwilę, ale z tego co widzę, jest to kolejne forum gdzie ludzie wyjeżdżają z hejtami typu: google nie boli.

Nie, nie boli - nawet w regulaminie masz zapis, że masz sprawdzić czy te informacje nie są gdzieś dostępne, a google to najłatwiejszy sposób znalezienia WSZYSTKIEGO. Tak jak napisałem, myślisz, że cały czas specjaliści od każdej dziedziny tu siedzą, czekając na możliwość odpowiedzi, bo komuś się nie chce szukać czy czytać dokumentacji?

Nemesis napisał(a):

Przykre, że kolejne forum schodzi na psy przez ludzi którzy wolą marnować swój czas na hejty zamiast na to do czego forum służy.

Tia... Cała Twoja ocena tego forum to to, że odesłali Cię do google, do czytania dokumentacji zamiast sami rzucić się do szukania odpowiedzi...

Nemesis napisał(a):

(do Admina: możecie mi nawet konto za to wywalić, nie będę płakać z tego powodu - bez pozdrowień, zirytowana użytkowniczka)

Nikt Ci konta nie zamierza za nic wywalać, po prostu musisz coś zrozumieć... brak pozdrowień przeboleję, a irytacja czy złość szkodzi urodzie :(

0

Ciekawe, wy wymagacie czytania ze zrozumieniem, sami tego nie robicie. Tak się składa, że czytałam, szukałam w google a nie czekałam na was. A że dokumentacja zawierała opis pod Linuxa a nie pod Windowsa to już nie moja wina. Ja tej dokumentacji nie pisałam, widać zbyt tępi jesteście by ogarnąć co znaczy słowo "szukałam" którego już wcześniej użyłam. A gdyby każdy tak odsyłał do google to w końcu każdy by znajdował jedynie posty które odsyłały by do google, błędne koło. Co do zarzutu o regulamin - jak mam problem to nie będę pół dnia poświęcać na czytanie regulaminów każdego forum, bo mam ważniejsze rzeczy do zrobienia jak np. rozwiązać mój problem. Specjaliści - wydaje mi się, że to nie jest forum dla humanistów, tylko programistów więc siłą rzeczy powinni być tu RÓWNIEŻ ludzie kompetentni a nie trolle które jedynie co potrafią to pisać hejty i odsyłać do google.

0
Nemesis napisał(a):

Tak się składa, że czytałam, szukałam w google a nie czekałam na was. A że dokumentacja zawierała opis pod Linuxa a nie pod Windowsa to już nie moja wina.

No cóż... Nic z tego nie wynika jednak z pierwszego pytania... Może tam jednak trzeba było napisać co znalazłaś a co nie działa i dlaczego. A tak powstało bardzo ogólne pytania, na które odpowiedź mogła być jedna: poszukaj w google...

Nemesis napisał(a):

widać zbyt tępi jesteście by ogarnąć co znaczy słowo "szukałam" którego już wcześniej użyłam.

No tak... Jesteśmy zbyt tępi, bo nie zobaczyliśmy tego "szukałam" ani tego co "znalazłam, a nie działa", a zobaczyliśmy jedynie "chciałabym".

Nemesis napisał(a):

jak mam problem to nie będę pół dnia poświęcać na czytanie regulaminów każdego forum, bo mam ważniejsze rzeczy do zrobienia jak np. rozwiązać mój problem

Oj, oj, oj... Ta część regulaminu akurat o której wspomniałem wynika ze zdrowego rozsądku... Nie czytasz regulaminu i masz pretensję? Toż miałaś już prawie rok na jego przeczytanie. Nawet po łebkach. Wchodząc gdzieś szanuje sie takie zasady jakie tam panują, a nie odrzuca, bo MI nie pasuje czy nie mam czasu się z nimi zapoznać. Zresztą, podejrzewam, że takie same zasady znajdziesz na każdym z for dla programistów.

Nemesis napisał(a):

Specjaliści - wydaje mi się, że to nie jest forum dla humanistów, tylko programistów więc siłą rzeczy powinni być tu RÓWNIEŻ ludzie kompetentni a nie trolle które jedynie co potrafią to pisać hejty i odsyłać do google.

Są, nawet nie zdajesz sobie ilu tu jest ludzi kompetentnych, którzy zawsze kiedy czegoś szukają kierują się najpierw do dokumentacji, a później dopiero pytają. No cóż, jak widać, nie tylko trolle odsyłają ludzi go google.

BTW: tak psioczysz na to odesłanie do google, na ten brak pomocy na tym forum. Pokaż nam w takim razie jak Ty, no jak sądzę też specjalistka skoro tu zajrzałaś pomagasz innym. Jak na razie to tylko korzystasz z tego forum na zasadzie "pomóżcie". Może więc podziel się z nami, z pytającymi, z tymi, których niesłusznie odesłano do google swoją wiedzą :]

0

Odkopię temat - podałbym odpowiedź jednak pożyczyłem książkę "Practical SQL" Second Edition -Anthony Debaros, chyba trzeba zainstalować rozszerzenie plpython3u - było to w ksiażce - bo przeKartkowywałem i o Pythonie też coś było - chyba jak używać z Postgresem: rozdział Using the Python Language in a function. Jak co daję namiary na książkę - no ale pewnie za późno na odpowiedź :) Książka jest o Postgresie - jak potrzebujesz odpowiedzi to jak będę miał książkę pod ręką to dam znać - lepiej późno niż wcale
W księgarni Helion jest też kurs Sql -projektowanie i implementacja baz danych w Pythonie Krzysztofa Piaskowego

1

W gruncie rzeczy pytanie nie jest trywialne ... inaczej się to robić na windowsie inaczej na linuxie.
W przypadku windowsa najlepiej to zrobić instalując Stack Builder (standardowa aplikacja przy instalacji postgresa). W niej można wskazać wersję postgresa, którą chcesz "roszerzyć" i wybierasz Categories->Add-ons, tools and utilities a następnie zaznaczasz ciapek EDB Language Pack v2. Reszta jak już w każdym standardowym instalatorze windowsowym
W linuxie natomiast proces jest nieco bardziej skomplikowany i opowiem jak to wygląda na debianie przy użyciu apt-get

sudo apt-get update && apt-get install postgresql-plpython3-11

gdzie postgresql-plpython3-11 może się różnić w zależności od tego jakiej wersji postgresa używasz.

WAŻNE od pewnego momentu (chyba od wersji 11) nie ma pakietów dla pythona w wersji 2 więc pamiętaj w nowych korzystać tylko z plpython3. Konkretną nazwę pakietu musisz sobie wygoogla do swojej wersji postgresa/linuxa ale raczej w każdej standardowej dystrybucji powinno się to znaleźć.

Następnie musisz takie rozszerzenie dodać sobie do bazy więc logujesz się do bazki czy to przez psql czy używając jakiegoś ludzkiego narzędzia graficznego (ja używam EMS SQL MANAGERA dla Postgresa) i dodajesz rozszerzenie. W psql:

CREATE EXTENSION plpython3u;

w EMS wygląda to tak: Prawy klik na podłączonej bazie->Tasks->Database extensions
screenshot-20220518122325.png
zaznaczasz ciapkiem i install. Po temacie.

Następnie mając już extension dodany trzeba dodać język :)

z psql:

CREATE PROCEDURAL LANGUAGE plpython3u
  HANDLER plpython3_call_handler
  VALIDATOR plpython3_validator;

COMMENT ON LANGUAGE plpython3u
IS 'PL/Python3U untrusted procedural language';

lub w EMS:
screenshot-20220518122630.png

i już twoja baza wie i rozumie co to python :)

Teraz tworząc np funkcję w postgresie możesz jej wskazać, że ma to być funkcja pythonowa, a nie sql'owa:

CREATE OR REPLACE FUNCTION sd.fcalclatlon (
  abearing double precision,
  adistance double precision,
  alat double precision,
  alon double precision
)
RETURNS sd.tlatlon AS
$body$
import math

R = 6378.1 #Radius of the Earth
brng = abearing #Bearing is 90 degrees converted to radians.
d = adistance #Distance in km

...

return [(lat2),(lon2)]
$body$
LANGUAGE 'plpython3u'
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER
PARALLEL UNSAFE
COST 100;

lub w EMS:
screenshot-20220518122914.png
we wskazanym miejscu wybierasz plpython3u

Mam nadzieję, że to wyczerpuje temat :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1