44.1. Python 2 и Python 3
PL/Python поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð´Ð²Ðµ ваÑиаÑии ÑзÑка: Python 2 и Python 3. (Ðолее ÑоÑÐ½Ð°Ñ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ поддеÑживаемÑÑ Ð²ÑоÑоÑÑепеннÑÑ Ð²ÐµÑÑиÑÑ Python Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑÑÑ Ð² инÑÑÑÑкÑиÑÑ Ð¿Ð¾ ÑÑÑановке Postgres Pro.) Так как ÑзÑки Python 2 и Python 3 неÑовмеÑÑÐ¸Ð¼Ñ Ð² некоÑоÑÑÑ Ð²Ð°Ð¶Ð½ÑÑ Ð°ÑпекÑÐ°Ñ , во избежание ÑмеÑÐµÐ½Ð¸Ñ Ð¸Ñ Ð² PL/Python пÑименÑеÑÑÑ ÑледÑÑÑÐ°Ñ ÑÑ ÐµÐ¼Ð° именованиÑ:
ЯзÑк PostgreSQL Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼
plpython2uпÑедÑÑавлÑÐµÑ ÑеализаÑÐ¸Ñ PL/Python, оÑнованнÑÑ Ð½Ð° ваÑиаÑии ÑзÑка Python 2.ЯзÑк PostgreSQL Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼
plpython3uпÑедÑÑавлÑÐµÑ ÑеализаÑÐ¸Ñ PL/Python, оÑнованнÑÑ Ð½Ð° ваÑиаÑии ÑзÑка Python 3.ЯзÑк Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼
plpythonuпÑедÑÑавлÑÐµÑ ÑеализаÑÐ¸Ñ PL/Python, оÑнованнÑÑ Ð½Ð° веÑÑии Python по ÑмолÑаниÑ, в даннÑй Ð¼Ð¾Ð¼ÐµÐ½Ñ ÑÑо Python 2. (ÐÑÐ¾Ñ Ð²ÑÐ±Ð¾Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð½Ðµ завиÑÐ¸Ñ Ð¾Ñ Ñого, ÐºÐ°ÐºÐ°Ñ Ð²ÐµÑÑÐ¸Ñ ÑÑиÑаеÑÑÑ Ð»Ð¾ÐºÐ°Ð»Ñной веÑÑией «по ÑмолÑаниÑ», напÑимеÑ, на какÑÑ Ð²ÐµÑÑÐ¸Ñ ÑказÑваеÑ/usr/bin/python.) ÐÑÐ±Ð¾Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð² оÑдалÑнном бÑдÑÑем вÑпÑÑке Postgres Pro Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑменÑн на Python 3, в завиÑимоÑÑи Ð¾Ñ Ñого, как бÑÐ´ÐµÑ Ð¿ÑоиÑÑ Ð¾Ð´Ð¸ÑÑ Ð¿ÐµÑÐµÑ Ð¾Ð´ на Python 3 в ÑообÑеÑÑве Python.
ÐÑа ÑÑ
ема аналогиÑна ÑекомендаÑиÑм, даннÑм в PEP 394, по вÑбоÑÑ Ð¸Ð¼ÐµÐ½Ð¸ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ python и пеÑеÑ
Ð¾Ð´Ñ Ñ Ð²ÐµÑÑии на веÑÑиÑ.
ÐÑÐ´ÐµÑ Ð»Ð¸ доÑÑÑпен PL/Python Ð´Ð»Ñ Python 2 или Ð´Ð»Ñ Python 3, либо ÑÑÐ°Ð·Ñ Ð´Ð»Ñ Ð¾Ð±ÐµÐ¸Ñ Ð²ÐµÑÑий, завиÑÐ¸Ñ Ð¾Ñ ÐºÐ¾Ð½ÑигÑÑаÑии ÑбоÑки или ÑÑÑановленнÑÑ Ð¿Ð°ÐºÐµÑов.
ÐодÑказка
ÐÐ°ÐºÐ°Ñ Ð²Ð°ÑиаÑÐ¸Ñ Ð±ÑÐ´ÐµÑ ÑобÑана, завиÑÐ¸Ñ Ð¾Ñ Ñого, как веÑÑÐ¸Ñ Python бÑÐ´ÐµÑ Ð½Ð°Ð¹Ð´ÐµÐ½Ð° пÑи ÑÑÑановке или бÑÐ´ÐµÑ Ð·Ð°Ð´Ð°Ð½Ð° в пеÑеменной окÑÑÐ¶ÐµÐ½Ð¸Ñ PYTHON. ЧÑÐ¾Ð±Ñ Ð² одной инÑÑаллÑÑии пÑиÑÑÑÑÑвовали обе ваÑиаÑии PL/Python, необÑ
одимо ÑконÑигÑÑиÑоваÑÑ Ð¸ наÑÑÑоиÑÑ Ð´ÐµÑево иÑÑ
одного кода дваждÑ.
Ð ÑезÑлÑÑаÑе ÑоÑмиÑÑеÑÑÑ ÑÐ°ÐºÐ°Ñ ÑÑÑаÑÐµÐ³Ð¸Ñ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸ ÑÐ¼ÐµÐ½Ñ Ð¾Ð¿ÑеделÑнной веÑÑии:
СÑÑеÑÑвÑÑÑие полÑзоваÑели и полÑзоваÑели, коÑоÑÑм в наÑÑоÑÑее вÑÐµÐ¼Ñ Ð½ÐµÐ¸Ð½ÑеÑеÑен Python 3, могÑÑ Ð²ÑбÑаÑÑ Ð¸Ð¼Ñ ÑзÑка
plpythonuи им не пÑидÑÑÑÑ Ð½Ð¸Ñего менÑÑÑ Ð² обозÑимом бÑдÑÑем. ЧÑÐ¾Ð±Ñ ÑпÑоÑÑиÑÑ Ð¼Ð¸Ð³ÑаÑÐ¸Ñ Ð½Ð° Python 3, коÑоÑÐ°Ñ Ð¿ÑоизойдÑÑ Ð² конÑе конÑов, ÑекомендÑеÑÑÑ Ð¿Ð¾ÑÑепенно пÑовеÑÑÑÑ Â«Ð³Ð¾ÑовноÑÑÑ Ðº бÑдÑÑемÑ» кода, обновлÑÑ ÐµÐ³Ð¾ до веÑÑий Python 2.6/2.7.Ðа пÑакÑике многие ÑÑнкÑии PL/Python можно мигÑиÑоваÑÑ Ð½Ð° Python 3 Ñ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»ÑнÑми изменениÑми или вовÑе без изменений.
ÐолÑзоваÑели, знаÑÑие, ÑÑо Ð¸Ñ ÐºÐ¾Ð´ оÑÐµÐ½Ñ ÑилÑно завиÑÐ¸Ñ Ð¾Ñ Python 2, и не планиÑÑÑÑие когда-либо менÑÑÑ ÐµÐ³Ð¾, могÑÑ Ð¸ÑполÑзоваÑÑ Ð¸Ð¼Ñ ÑзÑка
plpython2u. ÐÑо бÑÐ´ÐµÑ ÑабоÑаÑÑ ÐµÑÑ Ð¾ÑÐµÐ½Ñ Ð¸ оÑÐµÐ½Ñ Ð´Ð¾Ð»Ð³Ð¾, пока в Postgres Pro не бÑÐ´ÐµÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ Ð»Ð¸ÐºÐ²Ð¸Ð´Ð¸Ñована поддеÑжка Python 2.ÐолÑзоваÑели, желаÑÑие погÑÑзиÑÑÑÑ Ð² Python 3, могÑÑ Ð²ÑбÑаÑÑ Ð¸Ð¼Ñ ÑзÑка
plpython3u, и Ð¸Ñ ÐºÐ¾Ð´ бÑÐ´ÐµÑ ÑабоÑаÑÑ Ð²Ñегда, по ÑегоднÑÑним ÑÑандаÑÑам. РоÑдалÑнном бÑдÑÑем, когда веÑÑией по ÑмолÑÐ°Ð½Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ ÑÑаÑÑ Python 3, ÑиÑÑÑ Â«3» из имени ÑзÑка можно бÑÐ´ÐµÑ ÑбÑаÑÑ Ð¸Ð· ÑÑÑеÑиÑеÑÐºÐ¸Ñ ÑообÑажений.СмелÑÑаки, желаÑÑие Ñже ÑÐµÐ³Ð¾Ð´Ð½Ñ Ð¿Ð¾Ð»ÑÑиÑÑ Ð¾Ð¿ÐµÑаÑионное окÑÑжение ÑолÑко Ñ Python 3, могÑÑ Ð¼Ð¾Ð´Ð¸ÑиÑиÑоваÑÑ
pg_pltemplate, ÑÑÐ¾Ð±Ñ Ð¸Ð¼ÑplpythonuбÑло ÑавнознаÑноplpython3u, оÑÐ´Ð°Ð²Ð°Ñ Ñебе оÑÑÑÑ Ð² Ñом, ÑÑо ÑÐ°ÐºÐ°Ñ Ð¸Ð½ÑÑаллÑÑÐ¸Ñ Ð±ÑÐ´ÐµÑ Ð½ÐµÑовмеÑÑима Ñ Ð¾ÑÑалÑнÑм миÑом.
ÐополниÑелÑнÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ пеÑÐµÑ Ð¾Ð´Ðµ на Python 3 можно Ñакже найÑи в опиÑании ЧÑо нового в Python 3.0.
ÐÑполÑзоваÑÑ PL/Python на базе Python 2 и PL/Python на базе Python 3 в одном ÑеанÑе нелÑзÑ, Ñак как ÑÑо пÑиведÑÑ Ðº конÑликÑÑ Ñимволов в динамиÑеÑÐºÐ¸Ñ Ð¼Ð¾Ð´ÑлÑÑ , ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð²Ð»ÐµÑÑ Ñбой ÑеÑвеÑного пÑоÑеÑÑа Postgres Pro. Ð ÑиÑÑеме еÑÑÑ Ð¿ÑовеÑка, пÑедоÑвÑаÑаÑÑÐ°Ñ ÑмеÑение оÑновнÑÑ Ð²ÐµÑÑий Python в одном ÑеанÑе, коÑоÑÐ°Ñ Ð¿ÑеÑвÑÑ ÑÐµÐ°Ð½Ñ Ð¿Ñи вÑÑвлении ÑаÑÑ Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ. Ðднако иÑполÑзоваÑÑ Ð¾Ð±Ðµ ваÑиаÑии в одной базе даннÑÑ Ð²ÑÑ Ð¶Ðµ возможно, обÑаÑаÑÑÑ Ðº ним в ÑазнÑÑ ÑеанÑÐ°Ñ .