PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

भाषा बनाएं plpython3u - PostgreSQL 9.6

यह प्रकाशित होने वाले सबसे तेज ब्लॉग में से एक है :)। मैं अपने टर्मिनल से भाषा plpython3u बनाने के लिए अपने परीक्षण के रूप में प्रकाशित कर रहा हूं।

अजगर के विश्वसनीय या अविश्वसनीय वितरण का उपयोग करके हम PostgreSQL में plpython3u भाषा बना सकते हैं। अपने परीक्षण में, भाषा plpython3u बनाने के लिए python3.3 के SCL वितरण (अनुशंसित नहीं कर रहा हूँ, मैंने परीक्षण के लिए प्रयास किया) के साथ प्रयास कर रहा हूँ।

आइए बिना किसी बदलाव के PostgreSQL 9.6 इंस्टॉलेशन के बाइनरी वर्जन पर भाषा बनाना शुरू करें।

<ब्लॉकक्वॉट>

-बैश-4.2$ psql
psql.bin (9.6.4)
सहायता के लिए "सहायता" टाइप करें।

postgres=# भाषा बनाएं plpython3u;
त्रुटि:पुस्तकालय लोड नहीं कर सका "/opt/PostgreSQL/9.6/lib/postgresql/plpython3.so":libpython3.3m.so.1.0:साझा ऑब्जेक्ट फ़ाइल नहीं खोल सकता:ऐसा नहीं फ़ाइल या निर्देशिका

हमम, "/opt/PostgreSQL/9.6/lib/postgresql/plpython3.so" एक पुस्तकालय "libpython3.3m.so.1.0" की तलाश में। पुष्टि करने के लिए, "ldd" कमांड चलाएँ

<ब्लॉकक्वॉट>

-बैश-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 => नहीं मिला
libc.so.6 => /lib64/libc.so.6 (0x00007fe75e42f000)
/lib64/ld-linux-x86-64.so। 2 (0x00007fe75ea27000)

अब, यह स्पष्ट है कि हमें plpython3u भाषा बनाने के लिए libpython3.3m.so.1.0 की आवश्यकता है।

आइए एक रूट उपयोगकर्ता के रूप में इसे सक्षम करके SCL रेपो से python3.3 स्थापित करने के लिए आरंभ करें।

<ब्लॉकक्वॉट>

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

स्थापित करने के बाद, plpython3.so के लिए आवश्यक पुस्तकालय “libpython3.3m.so.1.0” खोजें। <ब्लॉकक्वॉट>

[रूट@टूल्स ~]# ढूंढें / -नाम libpython3.3m.so.1.0/opt/rh/python33/root/usr/lib64/libpython3.3m.so.1.0

ठंडा। एक पोस्टग्रेज उपयोगकर्ता के रूप में Python3 बंडल स्विच का उपयोग करने के लिए और पर्यावरण चर PYTHONPATH, PYTHONHOME, PATH और LD_LIBRARY_PATH सेट करें।

<ब्लॉकक्वॉट>

-बैश-4.2$ निर्यात PYTHONPATH=/opt/rh/python33/root/usr
-bash-4.2$ निर्यात PYTHONHOME=/opt/rh/python33/root/usr
-bash-4.2$ निर्यात LD_LIBRARY_PATH=/opt/rh/python33/root/usr/lib64:$LD_LIBRARY_PATH
-bash-4.2$ निर्यात पथ=$PYTHONPATH:$PATH

पुस्तकालयों को ठीक से चुनने के लिए फिर से "/opt/PostgreSQL/9.6/lib/postgresql/plpython3.so" पर "ldd" चलाने का प्रयास करें।

<ब्लॉकक्वॉट>

-बैश-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 -लिनक्स-x86-64.so.2 (0x00007fd31c89c000)

अच्छा। हम तैयार हैं। आइए सर्वर को पुनरारंभ करें और plpython3u भाषा बनाएं।

-बैश-4.2$ pg_ctl पुनरारंभ
सर्वर प्रारंभ

-bash-4.2$ psql
psql.bin (9.6.4)
सहायता के लिए "सहायता" टाइप करें।

postgres=# भाषा बनाएं plpython3u;
भाषा बनाएं

बहुत अच्छा... एक अंतिम चरण, एक नमूना फ़ंक्शन बनाकर plpython3u भाषा का परीक्षण करने देता है।

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)

अच्छा। आनंद लें!!

राघव


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Django प्रवासन त्रुटि:स्तंभ मौजूद नहीं है

  2. भूले हुए असाइनमेंट ऑपरेटर =और सामान्य :=

  3. PostgreSQL में उच्च उपलब्धता का प्रबंधन - भाग II:प्रतिकृति प्रबंधक

  4. स्प्रिंग बूट में पोस्टग्रेज कनेक्शन बंद कर दिया गया है त्रुटि

  5. Laravel:त्रुटि [PDOException]:PostgreSQL में ड्राइवर नहीं ढूँढ सका