{"id":41221,"date":"2020-02-06T20:42:46","date_gmt":"2020-02-06T17:42:46","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/python-gateway-v-intersystems-iris"},"modified":"2020-02-06T20:42:46","modified_gmt":"2020-02-06T17:42:46","slug":"python-gateway-v-intersystems-iris","status":"publish","type":"post","link":"https:\/\/prohoster.info\/hu\/blog\/python-gateway-v-intersystems-iris","title":{"rendered":"Python Gateway az InterSystems IRIS-ben","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Ez a cikk a Python Gateway-r\u0151l sz\u00f3l, amely egy ny\u00edlt forr\u00e1sk\u00f3d\u00fa k\u00f6z\u00f6ss\u00e9gi projekt az InterSystems IRIS adatplatformhoz. Ez a projekt lehet\u0151v\u00e9 teszi b\u00e1rmilyen g\u00e9pi tanul\u00e1si algoritmus megszervez\u00e9s\u00e9t, amelyet Python nyelven k\u00e9sz\u00edtettek (amely a Data Scientistok sz\u00e1m\u00e1ra alapvet\u0151 k\u00f6rnyezet), sz\u00e1mos k\u00e9sz k\u00f6nyvt\u00e1r haszn\u00e1lat\u00e1t a rugalmas, automatiz\u00e1lt AI\/ML elemz\u0151 megold\u00e1sok gyors l\u00e9trehoz\u00e1s\u00e1hoz az InterSystems IRIS platformon. Ebben a cikkben megmutatom, hogyan tudja az InterSystems IRIS megszervezni a folyamatokat Python nyelven, hat\u00e9konyan megval\u00f3s\u00edtani a k\u00e9tir\u00e1ny\u00fa adat\u00e1tvitelt \u00e9s l\u00e9trehozni intelligens \u00fczleti folyamatokat.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1 id=\"plan\">Terv<\/h1>\n<p><\/p>\n<ol>\n<li>Bevezet\u00e9s.<\/li>\n<li>Eszk\u00f6zk\u00e9szlet.<\/li>\n<li>Telep\u00edt\u00e9s.<\/li>\n<li>API.<\/li>\n<li>Interoperabilit\u00e1s.<\/li>\n<li>Jupyter Notebook.<\/li>\n<li>K\u00f6vetkeztet\u00e9sek.<\/li>\n<li>Hivatkoz\u00e1sok.<\/li>\n<li>MLToolkit.<\/li>\n<\/ol>\n<p><\/p>\n<h1 id=\"vvedenie\">Bevezet\u00e9s<\/h1>\n<p><\/p>\n<p>A Python egy \u00e1ltal\u00e1nos c\u00e9l\u00fa, magas szint\u0171 programoz\u00e1si nyelv, amely a fejleszt\u0151k hat\u00e9konys\u00e1g\u00e1nak \u00e9s a k\u00f3d olvashat\u00f3s\u00e1g\u00e1nak n\u00f6vel\u00e9s\u00e9re \u00f6sszpontos\u00edt. Ebben a cikk sorozatban bemutatom a Python nyelv alkalmaz\u00e1si lehet\u0151s\u00e9geit az InterSystems IRIS platformon, k\u00fcl\u00f6n\u00f6s figyelmet ford\u00edtva a Python haszn\u00e1lat\u00e1ra g\u00e9pi tanul\u00e1si modellek l\u00e9trehoz\u00e1s\u00e1ra \u00e9s alkalmaz\u00e1s\u00e1ra.<\/p>\n<p><\/p>\n<p>A g\u00e9pi tanul\u00e1s (ML) egy mesters\u00e9ges intelligenci\u00e1hoz tartoz\u00f3 m\u00f3dszercsoport, amelynek jellemz\u0151je, hogy nem k\u00f6zvetlen\u00fcl old meg egy feladatot, hanem a hasonl\u00f3 feladatok megold\u00e1sa sor\u00e1n tanul. <\/p>\n<p><\/p>\n<p>A g\u00e9pi tanul\u00e1s algoritmusai \u00e9s modellei egyre elterjedtebbek. Ennek sz\u00e1mos oka van, de mind arra vezethet\u0151 vissza, hogy el\u00e9rhet\u0151v\u00e9 v\u00e1ltak, k\u00f6nnyen haszn\u00e1lhat\u00f3k \u00e9s gyakorlati eredm\u00e9nyeket hoznak. A klaszterez\u00e9s vagy ak\u00e1r a neur\u00e1lis h\u00e1l\u00f3zati modellez\u00e9s \u00faj technol\u00f3gi\u00e1nak sz\u00e1m\u00edt? <\/p>\n<p><\/p>\n<p>Term\u00e9szetesen nem, de jelenleg nincs sz\u00fcks\u00e9g arra, hogy sz\u00e1mos ezer sor k\u00f3dot \u00edrjunk egyetlen modell elind\u00edt\u00e1s\u00e1hoz, \u00e9s az modellek l\u00e9trehoz\u00e1s\u00e1nak \u00e9s alkalmaz\u00e1s\u00e1nak k\u00f6lts\u00e9gei folyamatosan cs\u00f6kkennek.<\/p>\n<p><\/p>\n<p>Az eszk\u00f6z\u00f6k fejl\u0151dnek \u2014 mik\u00f6zben nincsenek teljesen GUI-ir\u00e1ny\u00edtott AI\/ML eszk\u00f6z\u00f6k, a fejl\u0151d\u00e9s, amelyet m\u00e1s inform\u00e1ci\u00f3s rendszerek oszt\u00e1lyaiban, p\u00e9ld\u00e1ul a BI-ben tapasztaltunk (a k\u00f3d\u00edr\u00e1st\u00f3l a keretrendszer \u00e9s GUI-ir\u00e1ny\u00edtott konfigur\u00e1lhat\u00f3 megold\u00e1sok haszn\u00e1lat\u00e1ig), az AI\/ML eszk\u00f6z\u00f6kben is megfigyelhet\u0151. M\u00e1r t\u00fall\u00e9pt\u00fcnk a k\u00f3d\u00edr\u00e1s f\u00e1zis\u00e1n, \u00e9s ma keretrendszereket haszn\u00e1lunk a modellek fel\u00e9p\u00edt\u00e9s\u00e9re \u00e9s oktat\u00e1s\u00e1ra.<\/p>\n<p><\/p>\n<p>M\u00e1s egy\u00e9b fejleszt\u00e9sek, p\u00e9ld\u00e1ul a lehet\u0151s\u00e9g a m\u00e1r el\u0151k\u00e9pzett modellek terjeszt\u00e9s\u00e9re, amikor a v\u00e9gfelhaszn\u00e1l\u00f3nak csak a modell tan\u00edt\u00e1s\u00e1t kell befejeznie a saj\u00e1t, specifikus adataival, k\u00f6nnyebb\u00e9 teszi a g\u00e9pi tanul\u00e1s alkalmaz\u00e1s\u00e1nak megkezd\u00e9s\u00e9t. Ezek az \u00e1tt\u00f6r\u00e9sek jelent\u0151sen leegyszer\u0171s\u00edtik a g\u00e9pi tanul\u00e1s tanulm\u00e1nyoz\u00e1s\u00e1t mind a szakemberek, mind a c\u00e9gek sz\u00e1m\u00e1ra.<\/p>\n<p><\/p>\n<p>M\u00e1sr\u00e9szr\u0151l egyre t\u00f6bb adatot gy\u0171jt\u00fcnk. Az InterSystems IRIS-hez hasonl\u00f3 egys\u00e9ges\u00edtett adatplatform r\u00e9v\u00e9n ez az inform\u00e1ci\u00f3 azonnal feldolgozhat\u00f3 \u00e9s felhaszn\u00e1lhat\u00f3 a g\u00e9pi tanul\u00e1si modellek alapadatak\u00e9nt.<\/p>\n<p><\/p>\n<p>A felh\u0151re val\u00f3 \u00e1t\u00e1ll\u00e1ssal az AI\/ML projektek ind\u00edt\u00e1sa k\u00f6nnyebb\u00e9 v\u00e1lik, mint valaha. Csak azokat az er\u0151forr\u00e1sokat haszn\u00e1ljuk, amelyekre sz\u00fcks\u00e9g\u00fcnk van. Tov\u00e1bb\u00e1, a felh\u0151platformok \u00e1ltal k\u00edn\u00e1lt p\u00e1rhuzamos\u00edt\u00e1s r\u00e9v\u00e9n id\u0151t is megtakar\u00edthatunk.<\/p>\n<p><\/p>\n<p>De mi a helyzet az eredm\u00e9nyekkel? Itt kezd bonyolultabb\u00e1 v\u00e1lni a dolog. Sz\u00e1mos eszk\u00f6z l\u00e9tezik a modellek \u00e9p\u00edt\u00e9s\u00e9re, amelyeket k\u00e9s\u0151bb ismertetek. J\u00f3 modellt \u00e9p\u00edteni nem k\u00f6nny\u0171, de mi j\u00f6n ezut\u00e1n? A modell \u00fczleti hasznos\u00edt\u00e1sa szint\u00e9n nem trivialis feladat. A probl\u00e9ma gy\u00f6kere az analitikai \u00e9s tranzakci\u00f3s terhel\u00e9sek, valamint az adatmodellek sz\u00e9tv\u00e1laszt\u00e1s\u00e1ban rejlik. Amikor a modellt tan\u00edtjuk, ezt \u00e1ltal\u00e1ban t\u00f6rt\u00e9neti adatokon tessz\u00fck. De a fel\u00e9p\u00edtett modell helye a tranzakci\u00f3s adatfeldolgoz\u00e1sban van. Mi \u00e9rtelme van a legjobb csal\u00e1s-\u00e9szlel\u0151 modellnek, ha naponta egyszer futtatjuk? A csal\u00f3k m\u00e1r r\u00e9g elmentek a p\u00e9nz\u00fckkel. A modellt t\u00f6rt\u00e9neti adatokon kell tan\u00edtani, de azt is val\u00f3s id\u0151ben kell alkalmaznunk az \u00fajonnan be\u00e9rkez\u0151 adatokon, hogy \u00fczleti folyamataik a modell \u00e1ltal tett el\u0151rejelz\u00e9sek szerint tudjanak m\u0171k\u00f6dni.<\/p>\n<p><\/p>\n<p>A ML Toolkit olyan eszk\u00f6z\u00f6k gy\u0171jtem\u00e9nye, amelynek c\u00e9lja \u00e9ppen ez: a modellek \u00e9s a tranzakci\u00f3s k\u00f6rnyezet integr\u00e1l\u00e1sa, hogy az \u00e9p\u00edtett modelleket k\u00f6nnyen fel lehessen haszn\u00e1lni k\u00f6zvetlen\u00fcl az \u00fczleti folyamataikban. A Python Gateway a ML Toolkit r\u00e9sz\u00e9t k\u00e9pezi, \u00e9s integr\u00e1ci\u00f3t biztos\u00edt a Python nyelvvel (hasonl\u00f3an az R Gateway-hez, amely a ML Toolkit r\u00e9szek\u00e9nt az R nyelv integr\u00e1l\u00e1s\u00e1t biztos\u00edt).<\/p>\n<p><\/p>\n<h1 id=\"instrumentariy\">Eszk\u00f6zt\u00e1r<\/h1>\n<p><\/p>\n<p>Miel\u0151tt tov\u00e1bb l\u00e9pn\u00e9nk, szeretn\u00e9m n\u00e9h\u00e1ny eszk\u00f6zt \u00e9s k\u00f6nyvt\u00e1rat bemutatni Pythonban, amelyet k\u00e9s\u0151bb haszn\u00e1lni fogunk.<\/p>\n<p><\/p>\n<h2 id=\"tehnologii\">Technol\u00f3gi\u00e1k<\/h2>\n<p><\/p>\n<ul>\n<li>A Python egy \u00e9rtelmezett, magas szint\u0171, \u00e1ltal\u00e1nos c\u00e9l\u00fa programoz\u00e1si nyelv. A nyelv f\u0151 el\u0151nye a nagy matematikai, ML \u00e9s AI k\u00f6nyvt\u00e1rak v\u00e1laszt\u00e9ka. Az ObjectScript-hez hasonl\u00f3an ez is egy objektum-orient\u00e1lt nyelv, de minden dinamikusan, nem statikusan van meghat\u00e1rozva. Emellett minden egy objektum. A k\u00e9s\u0151bbi cikkek egy r\u00f6vid ismeretanyagot felt\u00e9teleznek a nyelvr\u0151l. Ha szeretn\u00e9 elkezdeni a tanul\u00e1st, azt javaslom, hogy kezdje itt: <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.python.org\/3.6\/tutorial\/index.html\">dokument\u00e1ci\u00f3<\/a><\/noindex>.<\/li>\n<li>A k\u00f6vetkez\u0151 gyakorlatokhoz telep\u00edtse a <noindex><a rel=\"nofollow\" href=\"https:\/\/www.python.org\/downloads\/release\/python-367\/\">Python 3.6.7 64 bit<\/a><\/noindex>.<\/li>\n<li>IDE: \u00c9n a <noindex><a rel=\"nofollow\" href=\"https:\/\/www.jetbrains.com\/pycharm\/\">PyCharm<\/a><\/noindex>, de \u00e1ltal\u00e1ban haszn\u00e1lhat\u00f3 m\u00e1s is, <noindex><a rel=\"nofollow\" href=\"https:\/\/realpython.com\/python-ides-code-editors-guide\/\">sok<\/a><\/noindex>. Ha az Atelier-t haszn\u00e1lja, van egy Eclipse-b\u0151v\u00edtm\u00e9ny Python fejleszt\u0151k sz\u00e1m\u00e1ra. Ha a VS Code-t haszn\u00e1lja, van egy kieg\u00e9sz\u00edt\u0151 Pythonhoz. <\/li>\n<li>Notebook: Az IDE helyett online jegyzetf\u00fczetekben \u00edrhat \u00e9s oszthat meg a szkriptjeit. A legn\u00e9pszer\u0171bb ezek k\u00f6z\u00fcl a <noindex><a rel=\"nofollow\" href=\"https:\/\/jupyter.org\/\">Jupyter<\/a><\/noindex>.<\/li>\n<\/ul>\n<p><\/p>\n<h2 id=\"biblioteki\">K\u00f6nyvt\u00e1rak<\/h2>\n<p><\/p>\n<p>\u00cdme egy (nem teljes) lista g\u00e9pi tanul\u00e1sra vonatkoz\u00f3 k\u00f6nyvt\u00e1rakr\u00f3l:<\/p>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/www.numpy.org\/\">Numpy<\/a><\/noindex> \u2014 alapvet\u0151 csomag pontos sz\u00e1m\u00edt\u00e1sokhoz.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/pandas.pydata.org\/\">Pandas<\/a><\/noindex> \u2014 nagy teljes\u00edtm\u00e9ny\u0171 adatstrukt\u00far\u00e1k \u00e9s adat-elemz\u0151 eszk\u00f6z\u00f6k.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/matplotlib.org\/\">Matplotlib<\/a><\/noindex> \u2014 grafikonok k\u00e9sz\u00edt\u00e9se.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/seaborn.pydata.org\/\">Seaborn<\/a><\/noindex> \u2014 adatvizualiz\u00e1ci\u00f3, amely a matplotlib-ra \u00e9p\u00fcl.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/scikit-learn.org\/stable\/\">Sklearn<\/a><\/noindex> \u2014 g\u00e9pi tanul\u00e1si m\u00f3dszerek.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/xgboost.readthedocs.io\/en\/latest\/index.html\">XGBoost<\/a><\/noindex> \u2014 g\u00e9pi tanul\u00e1si algoritmusok a gradiensemel\u00e9s (Gradient Boosting) m\u00f3dszertan\u00e1n bel\u00fcl.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/radimrehurek.com\/gensim\/\">Gensim<\/a><\/noindex> \u2014 NLP.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/keras.io\/\">, amely t\u00f6bb interf\u00e9szv\u00e1ltozatot biztos\u00edt a modellek fel\u00e9p\u00edt\u00e9s\u00e9hez (Szekvenci\u00e1lis, Funkcion\u00e1lis, Aloszt\u00e1lyoz\u00e1s), lehet\u0151v\u00e9 t\u00e9ve azok<\/a><\/noindex> \u2014 neur\u00e1lis h\u00e1l\u00f3zatok.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.tensorflow.org\/\">Tensorflow<\/a><\/noindex> \u2014 platform g\u00e9pi tanul\u00e1si modellek l\u00e9trehoz\u00e1s\u00e1hoz.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/pytorch.org\/\">PyTorch<\/a><\/noindex> \u2014 Pythonra optimaliz\u00e1lt g\u00e9pi tanul\u00e1si modellek l\u00e9trehoz\u00e1s\u00e1ra szolg\u00e1l\u00f3 platform.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/nyoka-pmml\/nyoka\">Nyoka<\/a><\/noindex> \u2014 PMML k\u00fcl\u00f6nb\u00f6z\u0151 modellekb\u0151l.<\/li>\n<\/ul>\n<p><\/p>\n<p>Az AI\/ML technol\u00f3gi\u00e1k lehet\u0151v\u00e9 teszik a v\u00e1llalkoz\u00e1sok hat\u00e9konyabb\u00e1 \u00e9s alkalmazkod\u00f3bb\u00e1 t\u00e9tel\u00e9t. R\u00e1ad\u00e1sul manaps\u00e1g ezek a technol\u00f3gi\u00e1k egyre k\u00f6nnyebben fejleszthet\u0151k \u00e9s alkalmazhat\u00f3k. Kezdje el tanulm\u00e1nyozni az AI\/ML technol\u00f3gi\u00e1kat \u00e9s azt, hogyan seg\u00edthetnek szervezet\u00e9nek n\u00f6vekedni.<\/p>\n<p><\/p>\n<h1 id=\"ustanovka\">Telep\u00edt\u00e9s<\/h1>\n<p><\/p>\n<p>T\u00f6bb m\u00f3dja is van a Python Gateway telep\u00edt\u00e9s\u00e9nek \u00e9s haszn\u00e1lat\u00e1nak:<\/p>\n<p><\/p>\n<ul>\n<li>Windows OS\n<ul>\n<li>Windows<\/li>\n<li>Linux<\/li>\n<li>Mac<\/li>\n<\/ul>\n<\/li>\n<li>Docker\n<ul>\n<li>Haszn\u00e1ljon k\u00e9pet a DockerHub-b\u00f3l.<\/li>\n<li>Hozzon l\u00e9tre saj\u00e1t k\u00e9pet.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><\/p>\n<p>F\u00fcggetlen\u00fcl a telep\u00edt\u00e9s m\u00f3dj\u00e1t\u00f3l, sz\u00fcks\u00e9ge lesz a forr\u00e1sk\u00f3dra. A k\u00f3d let\u00f6lt\u00e9s\u00e9re csak egy hely van: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/intersystems-community\/PythonGateway\/releases\">a kiad\u00e1si oldalon<\/a><\/noindex>. Ez tartalmazza a tesztelt stabil kiad\u00e1sokat, egyszer\u0171en vegye az utols\u00f3t. Jelenleg ez a 0.8, de id\u0151vel \u00fajabbak is fognak \u00e9rkezni. Ne kl\u00f3nozza\/ t\u00f6lts\u00f6n le a t\u00e1rol\u00f3t, ink\u00e1bb t\u00f6ltse le a legfrissebb kiad\u00e1st.<\/p>\n<p><\/p>\n<h2 id=\"os\">Windows OS<\/h2>\n<p><\/p>\n<p>Ha Python Gateway-t telep\u00edt a m\u0171k\u00f6dtetett rendszerre, el\u0151sz\u00f6r (f\u00fcggetlen\u00fcl a rendszert\u0151l) telep\u00edtenie kell a Python-t. Ehhez:<\/p>\n<p><\/p>\n<ol>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.python.org\/downloads\/release\/python-367\/\">Telep\u00edtse a Python 3.6.7 64 bit verzi\u00f3j\u00e1t<\/a><\/noindex>. Javasolt a Python-t az alap\u00e9rtelmezett k\u00f6nyvt\u00e1rba telep\u00edteni.<\/li>\n<li>Telep\u00edtse a modult <code>dill<\/code>: <code>pip install dill<\/code>.<\/li>\n<li>T\u00f6ltse le az ObjectScript k\u00f3dot (azaz <code>do $system.OBJ.ImportDir(\"C:InterSystemsReposPythoniscpy\", \"*.cls\", \"c\", , 1)<\/code>) b\u00e1rmelyik szervezetbe a term\u00e9kekkel. Ha azt szeretn\u00e9, hogy a megl\u00e9v\u0151 ter\u00fclet t\u00e1mogassa a term\u00e9keket, futtassa: <code>write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1)<\/code>.<\/li>\n<li>Helyezze el <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/intersystems-community\/PythonGateway\/releases\">callout DLL\/SO\/DYLIB<\/a><\/noindex> tartalm\u00e1t a mapp\u00e1ba <code>bin<\/code> az InterSystems IRIS p\u00e9ld\u00e1ny\u00e1ban. A k\u00f6nyvt\u00e1rf\u00e1jnak el\u00e9rhet\u0151nek kell lennie a visszaadott \u00faton <code>write ##class(isc.py.Callout).GetLib()<\/code>. <\/li>\n<\/ol>\n<p><\/p>\n<h3 id=\"windows\">Windows<\/h3>\n<p><\/p>\n<ol>\n<li>Gy\u0151z\u0151dj\u00f6n meg arr\u00f3l, hogy a k\u00f6rnyezeti v\u00e1ltoz\u00f3 <code>PYTHONHOME<\/code> a Python 3.6.7-re mutat.<\/li>\n<li>Gy\u0151z\u0151dj\u00f6n meg arr\u00f3l, hogy a rendszer k\u00f6rnyezeti v\u00e1ltoz\u00f3ja <code>PATH<\/code> tartalmazza a v\u00e1ltoz\u00f3t <code>PYTHONHOME<\/code> (vagy a mapp\u00e1t, amire mutat).<\/li>\n<\/ol>\n<p><\/p>\n<h3 id=\"linux-debianubuntu\">Linux (Debian\/Ubuntu)<\/h3>\n<p><\/p>\n<ol>\n<li>Ellen\u0151rizze, hogy a k\u00f6rnyezeti v\u00e1ltoz\u00f3 <code>PATH<\/code> tartalmazza <code>\/usr\/lib<\/code> \u00e9s <code>\/usr\/lib\/x86_64-linux-gnu<\/code>. Haszn\u00e1lja a f\u00e1jlt <code>\/etc\/environment<\/code> az k\u00f6rnyezeti v\u00e1ltoz\u00f3k be\u00e1ll\u00edt\u00e1s\u00e1hoz.<\/li>\n<li>Hib\u00e1k eset\u00e9n <code>undefined symbol: _Py_TrueStruct<\/code> \u00e1ll\u00edtsa be a <code>PythonLib<\/code>. Tov\u00e1bb\u00e1 a <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/intersystems-community\/PythonGateway\">Readme<\/a><\/noindex> tartalmazza a Hibaelh\u00e1r\u00edt\u00e1s szakaszt.<\/li>\n<\/ol>\n<p><\/p>\n<h3 id=\"mac\">Mac<\/h3>\n<p><\/p>\n<ol>\n<li>Jelenleg csak a Python 3.6.7 van t\u00e1mogatva a <noindex><a rel=\"nofollow\" href=\"https:\/\/www.python.org\/downloads\/release\/python-367\/\">Python.org<\/a><\/noindex>. Ellen\u0151rizze a v\u00e1ltoz\u00f3t <code>PATH<\/code>.<\/li>\n<\/ol>\n<p><\/p>\n<p>Ha m\u00f3dos\u00edtotta a k\u00f6rnyezeti v\u00e1ltoz\u00f3kat, ind\u00edtsa \u00fajra az InterSystems term\u00e9k\u00e9t.<\/p>\n<p><\/p>\n<h2 id=\"docker\">Docker<\/h2>\n<p><\/p>\n<p>A kont\u00e9nerek haszn\u00e1lat\u00e1nak sz\u00e1mos el\u0151nye van: <\/p>\n<p><\/p>\n<ul>\n<li>Hordozhat\u00f3s\u00e1g<\/li>\n<li>Hat\u00e9konys\u00e1g<\/li>\n<li>Elszigetel\u00e9s<\/li>\n<li>K\u00f6nny\u0171s\u00e9g\u00e9nek<\/li>\n<li>Immutable<\/li>\n<\/ul>\n<p><\/p>\n<p>Ismerkedjen meg ezzel a <noindex><a rel=\"nofollow\" href=\"https:\/\/community.intersystems.com\/post\/continuous-delivery-your-intersystems-solution-using-gitlab-part-v-why-containers\">cikkb\u0151l \u00e1ll\u00f3 sorozattal<\/a><\/noindex> tov\u00e1bbi inform\u00e1ci\u00f3k\u00e9rt az InterSystems term\u00e9kek Dockerrel val\u00f3 haszn\u00e1lat\u00e1r\u00f3l. <\/p>\n<p><\/p>\n<p>Jelenleg minden Python Gateway kiad\u00e1s kont\u00e9nerekre \u00e9p\u00fcl <code>2019.4<\/code>.<\/p>\n<p><\/p>\n<h3 id=\"gotovyy-obraz\">Elk\u00e9sz\u00edtett k\u00e9p<\/h3>\n<p><\/p>\n<p>Futtassa: <code>docker run -d -p 52773:52773 --name irispy intersystemscommunity\/irispy-community:latest<\/code>, hogy let\u00f6ltse \u00e9s elind\u00edtsa a Python Gateway-t az InterSystems IRIS Community Editionnel. Ennyi.<\/p>\n<p><\/p>\n<h3 id=\"sozdayte-svoy-sobstvennyy-obraz\">Hozzon l\u00e9tre saj\u00e1t k\u00e9pet.<\/h3>\n<p><\/p>\n<p>A docker-k\u00e9p fel\u00e9p\u00edt\u00e9s\u00e9hez futtassa a repository gy\u00f6ker\u00e9ben: <code>docker build --force-rm --tag intersystemscommunity\/irispy:latest .<\/code>.<br \/>\nAlap\u00e9rtelmez\u00e9s szerint a k\u00e9p a <code>store\/intersystems\/iris-community:2019.4.0.383.0<\/code>, de ezt megv\u00e1ltoztathatja az <code>IMAGE<\/code>.<br \/>\nInterSystems IRIS-b\u0151l val\u00f3 \u00e9p\u00edt\u00e9shez hajtsa v\u00e9gre: `docker build --build-arg IMAGE=store\/intersystems\/iris:2019.4.0.383.0 --force-rm --tag intersystemscommunity\/irispy:latest &lt;&lt;.<\/p>\n<p><\/p>\n<p>Az InterSystems IRIS-b\u00f3l val\u00f3 \u00e9p\u00edt\u00e9shez futtassa: `docker build \u2014build-arg IMAGE=store\/intersystems\/iris:2019.4.0.383.0 \u2014force-rm \u2014tag intersystemscommunity\/irispy:latest `.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">Ezut\u00e1n elind\u00edthatja a docker-k\u00e9pet:<\/code><\/pre>\n<p><\/p>\n<p>docker run -d \n  -p 52773:52773 \n  -v \/\/:\/mount \n  --name irispy \n  intersystemscommunity\/irispy:latest \n  --key \/mount\/iris.key<\/p>\n<p><\/p>\n<h3 id=\"kommentarii\">Megjegyz\u00e9sek<\/h3>\n<p><\/p>\n<ul>\n<li>Tesztel\u00e9si folyamat <code>isc.py.test.Process<\/code> t\u00f6bb k\u00e9pet t\u00e1rol ideiglenes k\u00f6nyvt\u00e1rba. Lehet, hogy \u00e9rdemes megv\u00e1ltoztatni ezt az \u00fatvonalat egy csatolt k\u00f6nyvt\u00e1rra. Ehhez szerkeszteni kell a be\u00e1ll\u00edt\u00e1st <code>WorkingDir<\/code> a csatolt k\u00f6nyvt\u00e1r megad\u00e1s\u00e1val.<\/li>\n<li>A termin\u00e1lhoz val\u00f3 hozz\u00e1f\u00e9r\u00e9shez futtassa: <code>docker exec -it irispy sh<\/code>.<\/li>\n<li>Hozz\u00e1f\u00e9r\u00e9s a Rendszerkezel\u0151 Port\u00e1lhoz bejelentkez\u00e9ssel <code>SuperUser<\/code>\/<code>SYS<\/code>.<\/li>\n<li>A kont\u00e9ner le\u00e1ll\u00edt\u00e1s\u00e1hoz futtassa: <code>docker stop irispy &amp;&amp; docker rm --force irispy<\/code>.<\/li>\n<\/ul>\n<p><\/p>\n<h2 id=\"proverka-ustanovki\">A telep\u00edt\u00e9s ellen\u0151rz\u00e9se<\/h2>\n<p><\/p>\n<p>Miut\u00e1n telep\u00edtette a Python Gateway-t, \u00e9rdemes ellen\u0151rizni, hogy m\u0171k\u00f6dik-e. Futtassa ezt a k\u00f3dot az InterSystems IRIS termin\u00e1lj\u00e1n:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">set sc = ##class(isc.py.Callout).Setup() \nset sc = ##class(isc.py.Main).SimpleString(\"x='HELLO'\", \"x\", , .var).\nwrite var<\/code><\/pre>\n<p><\/p>\n<p>Az eredm\u00e9nynek a k\u00f6vetkez\u0151t kellene ki\u00edrnia <code>HELLO<\/code> \u2014 a Python v\u00e1ltoz\u00f3 \u00e9rt\u00e9ke <code>x<\/code>. Ha a visszat\u00e9r\u00e9si st\u00e1tusz <code>sc<\/code> hiba vagy <code>var<\/code> \u00fcres, ellen\u0151rizze <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/intersystems-community\/PythonGateway\">Readme \u2014 Hibakeres\u00e9si szakasz<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h1 id=\"api\">API<\/h1>\n<p><\/p>\n<p>A Python Gateway telep\u00edtve van, \u00e9s megbizonyosodott r\u00f3la, hogy m\u0171k\u00f6dik. Itt az id\u0151 elkezdeni haszn\u00e1lni!<br \/>\nA Python f\u0151 interf\u00e9sze a <code>isc.py.Main<\/code>. Ez a k\u00f6vetkez\u0151 met\u00f3duscsoportokat k\u00edn\u00e1lja (mind visszat\u00e9r\u00edti a <code>%Status<\/code>):<\/p>\n<p><\/p>\n<ul>\n<li>K\u00f3d v\u00e9grehajt\u00e1sa<\/li>\n<li>Adat\u00e1tvitel<\/li>\n<li>Seg\u00e9dprogramok<\/li>\n<\/ul>\n<p><\/p>\n<h2 id=\"ispolnenie-koda\">K\u00f3d v\u00e9grehajt\u00e1sa<\/h2>\n<p><\/p>\n<p>Ezek a met\u00f3dusok lehet\u0151v\u00e9 teszik tetsz\u0151leges Python k\u00f3d v\u00e9grehajt\u00e1s\u00e1t.<\/p>\n<p><\/p>\n<h3 id=\"simplestring\">SimpleString<\/h3>\n<p><\/p>\n<p><code>SimpleString<\/code> \u2014 ez a f\u0151 met\u00f3dus. N\u00e9gy vol. \u00e9rvel\u00e9st fogad el:<\/p>\n<p><\/p>\n<ul>\n<li><code>k\u00f3d<\/code> \u2014 a v\u00e9grehajtand\u00f3 k\u00f3d stringje. Sorv\u00e9gi szimb\u00f3lum: <code>$c(10)<\/code>.<\/li>\n<li><code>returnVariable<\/code> \u2014 a visszat\u00e9rend\u0151 v\u00e1ltoz\u00f3 neve.<\/li>\n<li><code>serialization<\/code> \u2014 hogyan sorozza ezt. <code>returnVariable<\/code>. 0 \u2014 string (alap\u00e9rtelmezett), 1 \u2014 repr.<\/li>\n<li><code>eredm\u00e9ny<\/code> \u2014 ByRef referencia a a v\u00e1ltoz\u00f3ra, amelyben az \u00e9rt\u00e9k t\u00e1rol\u00f3dik <code>returnVariable<\/code>.<\/li>\n<\/ul>\n<p><\/p>\n<p>Fent v\u00e9grehajtottuk:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">set sc = ##class(isc.py.Main).SimpleString(\"x='HELLO'\", \"x\", , .var).<\/code><\/pre>\n<p><\/p>\n<p>Ebben a p\u00e9ld\u00e1ban a Python v\u00e1ltoz\u00f3nak adunk \u00e9rt\u00e9ket <code>x<\/code> \u00e9rt\u00e9ket <code>Hell\u00f3<\/code> \u00e9s vissza szeretn\u00e9nk kapni a Python v\u00e1ltoz\u00f3 \u00e9rt\u00e9k\u00e9t <code>x<\/code> az ObjectScript v\u00e1ltoz\u00f3ba <code>var<\/code>.<\/p>\n<p><\/p>\n<h3 id=\"executecode\">ExecuteCode<\/h3>\n<p><\/p>\n<p>Az ExecuteCode egy biztons\u00e1gosabb \u00e9s kev\u00e9sb\u00e9 korl\u00e1tozott alternat\u00edva <code>SimpleString<\/code>.<br \/>\nAz InterSystems IRIS platformja korl\u00e1tozott 3 641 144 karakter hosszig, \u00e9s ha hosszabb k\u00f3dot szeretne v\u00e9grehajtani, folyamatazonos\u00edt\u00f3kra van sz\u00fcks\u00e9g.<br \/>\nK\u00e9t \u00e9rvet fogad el:<\/p>\n<p><\/p>\n<ul>\n<li><code>k\u00f3d<\/code> \u2014 a v\u00e9grehajtand\u00f3 Python k\u00f3d stringje vagy folyamata.<\/li>\n<li><code>variable<\/code> \u2014 (opcion\u00e1lis) a v\u00e9grehajt\u00e1s eredm\u00e9ny\u00e9nek hozz\u00e1rendel\u00e9se <code>k\u00f3d<\/code> ehhez a Python v\u00e1ltoz\u00f3hoz.<\/li>\n<\/ul>\n<p><\/p>\n<p>P\u00e9lda a haszn\u00e1lat\u00e1ra:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">set sc = ##class(isc.py.Main).ExecuteCode(\"2*3\", \"y\").<\/code><\/pre>\n<p><\/p>\n<p>Ebben a p\u00e9ld\u00e1ban megszorozzuk a 2-t a 3-mal, \u00e9s az eredm\u00e9nyt egy Python v\u00e1ltoz\u00f3ba \u00edrjuk. <code>y<\/code>.<\/p>\n<p><\/p>\n<h2 id=\"peredacha-dannyh\">Adat\u00e1tvitel<\/h2>\n<p><\/p>\n<p>Adatok \u00e1tad\u00e1sa Pythonban \u00e9s vissza.<\/p>\n<p><\/p>\n<h3 id=\"python---intersystems-iris\">Python -&gt; InterSystems IRIS<\/h3>\n<p><\/p>\n<p>N\u00e9gy m\u00f3dja van annak, hogy a Python v\u00e1ltoz\u00f3 \u00e9rt\u00e9k\u00e9t az InterSystems IRIS-ben kapja meg, a sz\u00fcks\u00e9ges sorozatt\u00f3l f\u00fcgg\u0151en:<\/p>\n<p><\/p>\n<ul>\n<li><code>String<\/code> egyszer\u0171 adatd\u00edjak \u00e9s hibakeres\u00e9s.<\/li>\n<li><code>Repr<\/code> egyszer\u0171 objektumok t\u00e1rol\u00e1s\u00e1ra \u00e9s hibakeres\u00e9sre.<\/li>\n<li><code>JSON<\/code> az InterSystems IRIS oldalon l\u00e9v\u0151 adatok egyszer\u0171 kezel\u00e9s\u00e9re.<\/li>\n<li><code>Pickle<\/code> az objektumok t\u00e1rol\u00e1s\u00e1ra.<\/li>\n<\/ul>\n<p><\/p>\n<p>Ezek a met\u00f3dusok lehet\u0151v\u00e9 teszik, hogy a Python v\u00e1ltoz\u00f3kat string vagy stream form\u00e1j\u00e1ban kapjuk meg.<\/p>\n<p><\/p>\n<ul>\n<li><code>GetVariable(variable, serialization, .stream, useString)<\/code> \u2014 lek\u00e9r\u00e9s <code>serialization<\/code> v\u00e1ltoz\u00f3t <code>variable<\/code> be. <code>stream<\/code>. Ha <code>useString<\/code> ha egyenl\u0151 1-gyel, \u00e9s a sorozat egy stringbe ker\u00fcl, akkor egy stringet ad vissza, nem streamet.<\/li>\n<li><code>GetVariableJson(variable, .stream, useString)<\/code> \u2014 JSON form\u00e1tumban lek\u00e9rdezi a v\u00e1ltoz\u00f3t.<\/li>\n<li><code>GetVariablePickle(variable, .stream, useString, useDill)<\/code> \u2014 lek\u00e9rdezi a Pickle (vagy Dill) form\u00e1tum\u00fa v\u00e1ltoz\u00f3t.<\/li>\n<\/ul>\n<p><\/p>\n<p>Pr\u00f3b\u00e1ljuk meg lek\u00e9rdezni a v\u00e1ltoz\u00f3nkat <code>y<\/code>.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">set sc = ##class(isc.py.Main).GetVariable(\"y\", , .val, 1)\nwrite val\n&gt;6<\/code><\/pre>\n<p><\/p>\n<h3 id=\"intersystems-iris---python\">InterSystems IRIS -&gt; Python<\/h3>\n<p><\/p>\n<p>Adatok bet\u00f6lt\u00e9se az InterSystems IRIS-b\u0151l Pythonba.<\/p>\n<p><\/p>\n<ul>\n<li><code>ExecuteQuery(query, variable, type, namespace)<\/code> \u2014 l\u00e9trehoz egy adatb\u00e1zist (pandas <code>dataframe<\/code> vagy <code>list<\/code>) SQL lek\u00e9rdez\u00e9sb\u0151l \u00e9s be\u00e1ll\u00edtja Python v\u00e1ltoz\u00f3ba. <code>variable<\/code>. A csomag <code>isc.py<\/code> el\u00e9rhet\u0151nek kell lennie a k\u00f6zegben, ahol a lek\u00e9rdez\u00e9s v\u00e9grehajt\u00e1sra ker\u00fcl. <code>namespace<\/code> ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace)<\/li>\n<li><code>\u2014 glob\u00e1lis adatok bet\u00f6lt\u00e9se<\/code> a szubscriptb\u0151l <code>global<\/code> a subscriptb\u0151l <code>start<\/code> t\u00f3l <code>end<\/code> Pythonban v\u00e1ltoz\u00f3k\u00e9nt <code>type<\/code>: <code>list<\/code>, vagy pandas. <code>dataframe<\/code>Az opcion\u00e1lis argumentumok le\u00edr\u00e1sa <code>\u00e1larc<\/code> \u00e9s <code>c\u00edmk\u00e9ket<\/code> a oszt\u00e1ly dokument\u00e1ci\u00f3j\u00e1ban \u00e9s a t\u00e1rol\u00f3ban tal\u00e1lhat\u00f3 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/intersystems-community\/PythonGateway\/blob\/master\/DataTransfer.md\">Data Transfer docs<\/a><\/noindex>.<\/li>\n<li><code>ExecuteClass(class, variable, type, start, end, properties, namespace)<\/code> \u2014 az oszt\u00e1ly adatait bet\u00f6lti <code>class<\/code> az id-b\u00f3l <code>start<\/code> t\u00f3l <code>end<\/code> Pythonban v\u00e1ltoz\u00f3k\u00e9nt <code>type<\/code>: <code>list<\/code>, vagy pandas. <code>dataframe<\/code>. <code>itt sz\u00fcks\u00e9ges ahhoz, hogy az adminisztr\u00e1tor \u00e9rtes\u00edt\u00e9st kapjon a build \u00e9s tesztel\u00e9si eredm\u00e9nyekr\u0151l, mint a folyamat tulajdonosa.<\/code> \u2014 lista (vessz\u0151vel elv\u00e1lasztva) az oszt\u00e1ly tulajdons\u00e1gair\u00f3l, amelyeket be kell t\u00f6lteni az adathalmazba. Maszkok t\u00e1mogatottak. <code>*<\/code> \u00e9s <code>?<\/code>. Alap\u00e9rtelmezett \u2014 <code>*<\/code> (minden tulajdons\u00e1g). A tulajdons\u00e1g <code>%%CLASSNAME<\/code> figyelmen k\u00edv\u00fcl hagy\u00e1sra ker\u00fcl.<\/li>\n<li><code>ExecuteTable(table, variable, type, start, end, properties, namespace)<\/code> \u2014 az adatainak bet\u00f6lt\u00e9se t\u00e1bl\u00e1zatb\u00f3l <code>table<\/code> az id-b\u00f3l <code>start<\/code> t\u00f3l <code>end<\/code> Pythonba.<\/li>\n<\/ul>\n<p><\/p>\n<p><code>ExecuteQuery<\/code> \u2014 univerz\u00e1lis (b\u00e1rmely \u00e9rv\u00e9nyes SQL-lek\u00e9rdez\u00e9s \u00e1tker\u00fcl\u00e9sre ker\u00fcl Pythonba). Azonban, <code>ExecuteGlobal<\/code> \u00e9s a wrapper-ei <code>ExecuteClass<\/code> \u00e9s <code>ExecuteTable<\/code> sz\u00e1mos korl\u00e1toz\u00e1ssal m\u0171k\u00f6dnek. Sokkal gyorsabbak (3-5-sz\u00f6r gyorsabbak, mint az ODBC-illeszt\u0151, \u00e9s 20-szor gyorsabbak, mint <code>ExecuteQuery<\/code>). Tov\u00e1bbi inform\u00e1ci\u00f3k tal\u00e1lhat\u00f3k a <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/intersystems-community\/PythonGateway\/blob\/master\/DataTransfer.md\">Data Transfer docs<\/a><\/noindex>.<br \/>\nMindezek a met\u00f3dusok t\u00e1mogatj\u00e1k az adatok \u00e1tad\u00e1s\u00e1t b\u00e1rmely ter\u00fcletr\u0151l. A csomagnak <code>isc.py<\/code> el\u00e9rhet\u0151nek kell lennie a c\u00e9lter\u00fcleten.<\/p>\n<p><\/p>\n<h3 id=\"executequery\">ExecuteQuery<\/h3>\n<p><\/p>\n<p><code>ExecuteQuery(request, variable, type, namespace)<\/code> \u2014 az \u00e9rv\u00e9nyes SQL-lek\u00e9rdez\u00e9s eredm\u00e9nyeinek \u00e1tad\u00e1sa Pythonba. Ez a leglassabb m\u00f3dszer az adatok \u00e1tad\u00e1s\u00e1ra. Haszn\u00e1lja akkor, ha <code>ExecuteGlobal<\/code> \u00e9s a wrapper-ei nem el\u00e9rhet\u0151k.<\/p>\n<p><\/p>\n<p>Argumentumok:<\/p>\n<p><\/p>\n<ul>\n<li><code>query<\/code> \u2014 SQL lek\u00e9rdez\u00e9s.<\/li>\n<li><code>variable<\/code> \u2014 a Python v\u00e1ltoz\u00f3 neve, amelybe az adatok be\u00edr\u00f3dnak.<\/li>\n<li><code>type<\/code> \u2014 <code>list<\/code> vagy Pandas <code>dataframe<\/code>.<\/li>\n<li><code>namespace<\/code> \u2014 a ter\u00fclet, ahol a lek\u00e9rdez\u00e9s v\u00e9grehajt\u00e1sra ker\u00fcl.<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"executeglobal\">ExecuteGlobal<\/h3>\n<p><\/p>\n<p><code>ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace)<\/code> \u2014 a glob\u00e1lis adatok \u00e1tad\u00e1sa Pythonba.<\/p>\n<p><\/p>\n<p>Argumentumok:<\/p>\n<p><\/p>\n<ul>\n<li><code>global<\/code> \u2014 a glob\u00e1lis n\u00e9v an\u00e9lk\u00fcl, hogy <code>^<\/code><\/li>\n<li><code>variable<\/code> \u2014 a Python v\u00e1ltoz\u00f3 neve, amelybe az adatok be\u00edr\u00f3dnak.<\/li>\n<li><code>type<\/code> \u2014 <code>list<\/code> vagy Pandas <code>dataframe<\/code>.<\/li>\n<li><code>start<\/code> \u2014 a glob\u00e1lis els\u0151 szubscriptje. K\u00f6telez\u0151 <code>%Integer<\/code>.<\/li>\n<li><code>end<\/code> \u2014 a glob\u00e1lis utols\u00f3 szubscriptje. K\u00f6telez\u0151 <code>%Integer<\/code>.<\/li>\n<li><code>\u00e1larc<\/code> \u2014 a glob\u00e1lis \u00e9rt\u00e9kek maszkol\u00e1sa. A maszk r\u00f6videbb lehet, mint a glob\u00e1lban tal\u00e1lhat\u00f3 mez\u0151k sz\u00e1ma (ebben az esetben a v\u00e9gs\u0151 mez\u0151k kihagy\u00e1sra ker\u00fclnek). A maszk form\u00e1z\u00e1sa:\n<ul>\n<li><code>+<\/code> adja \u00e1t az \u00e9rt\u00e9ket \u00fagy, ahogy van.<\/li>\n<li><code>-<\/code> hagyd ki az \u00e9rt\u00e9ket.<\/li>\n<li><code>b<\/code> \u2014 Logikai t\u00edpus (<code>0<\/code> \u2014 <code>False<\/code>, minden m\u00e1s \u2014 <code>Igaz<\/code>).<\/li>\n<li><code>d<\/code> \u2014 D\u00e1tum ($horolog, Windows alatt 1970-t\u0151l, Linux alatt 1900-t\u00f3l).<\/li>\n<li><code>t<\/code> \u2014 Id\u0151 ($horolog, m\u00e1sodpercek \u00e9jf\u00e9l \u00f3ta).<\/li>\n<li><code>m<\/code> \u2014 Id\u0151b\u00e9lyeg (YEAR-MONTH-DAY HOUR:MINUTE:SECOND form\u00e1tum\u00fa sz\u00f6veg).<\/li>\n<\/ul>\n<\/li>\n<li><code>c\u00edmk\u00e9ket<\/code> \u2014 %Oszlopok nev\u00e9t tartalmaz\u00f3 lista. Az els\u0151 elem \u2014 a szubscript neve.<\/li>\n<li><code>namespace<\/code> \u2014 a ter\u00fclet, ahol a lek\u00e9rdez\u00e9s v\u00e9grehajt\u00e1sra ker\u00fcl.<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"executeclass\">ExecuteClass<\/h3>\n<p><\/p>\n<p>Bor\u00edt\u00f3 a <code>ExecuteGlobal<\/code>. Az oszt\u00e1ly defin\u00edci\u00f3ja alapj\u00e1n k\u00e9sz\u00edti el\u0151 a h\u00edv\u00e1st <code>ExecuteGlobal<\/code> \u00e9s v\u00e9grehajtja azt.<\/p>\n<p><\/p>\n<p><code>ExecuteClass(class, variable, type, start, end, properties, namespace)<\/code> \u2014 az oszt\u00e1lyadatok \u00e1tad\u00e1sa Pythonban.<\/p>\n<p><\/p>\n<p>Argumentumok:<\/p>\n<p><\/p>\n<ul>\n<li><code>class<\/code> \u2014 oszt\u00e1ly neve<\/li>\n<li><code>variable<\/code> \u2014 a Python v\u00e1ltoz\u00f3 neve, amelybe az adatok be\u00edr\u00f3dnak.<\/li>\n<li><code>type<\/code> \u2014 <code>list<\/code> vagy Pandas <code>dataframe<\/code>.<\/li>\n<li><code>start<\/code> \u2014 kezd\u0151 azonos\u00edt\u00f3.<\/li>\n<li><code>end<\/code> \u2014 v\u00e9gs\u0151 azonos\u00edt\u00f3<\/li>\n<li><code>itt sz\u00fcks\u00e9ges ahhoz, hogy az adminisztr\u00e1tor \u00e9rtes\u00edt\u00e9st kapjon a build \u00e9s tesztel\u00e9si eredm\u00e9nyekr\u0151l, mint a folyamat tulajdonosa.<\/code> \u2014 lista (vessz\u0151vel elv\u00e1lasztva) az oszt\u00e1ly tulajdons\u00e1gair\u00f3l, amelyeket be kell t\u00f6lteni az adathalmazba. Maszkok t\u00e1mogatottak. <code>*<\/code> \u00e9s <code>?<\/code>. Alap\u00e9rtelmezett \u2014 <code>*<\/code> (minden tulajdons\u00e1g). A tulajdons\u00e1g <code>%%CLASSNAME<\/code> figyelmen k\u00edv\u00fcl hagy\u00e1sra ker\u00fcl.<\/li>\n<li><code>namespace<\/code> \u2014 a ter\u00fclet, ahol a lek\u00e9rdez\u00e9s v\u00e9grehajt\u00e1sra ker\u00fcl.<\/li>\n<\/ul>\n<p><\/p>\n<p>Minden tulajdons\u00e1g azonos form\u00e1ban ker\u00fcl \u00e1tad\u00e1sra, kiv\u00e9ve a t\u00edpus\u00fa tulajdons\u00e1gokat <code>te<\/code>, <code>%Id\u0151<\/code>, <code>%Logikai<\/code> \u00e9s <code>%Id\u0151b\u00e9lyeg<\/code> \u2014 ezek a megfelel\u0151 Python oszt\u00e1lyokk\u00e1 konvert\u00e1l\u00f3dnak.<\/p>\n<p><\/p>\n<h3 id=\"executetable\">ExecuteTable<\/h3>\n<p><\/p>\n<p>Bor\u00edt\u00f3 a <code>ExecuteClass<\/code>. \u00c1t\u00edrja a t\u00e1bl\u00e1zat nev\u00e9t az oszt\u00e1ly nev\u00e9re \u00e9s megh\u00edvja <code>ExecuteClass<\/code>. Al\u00e1\u00edr\u00e1s:<\/p>\n<p><\/p>\n<p><code>ExecuteTable(table, variable, type, start, end, properties, namespace)<\/code> \u2014 a t\u00e1bl\u00e1zat adatinak \u00e1tad\u00e1sa Pythonban.<\/p>\n<p><\/p>\n<p>Argumentumok:<\/p>\n<p><\/p>\n<ul>\n<li><code>table<\/code> \u2014 t\u00e1bl\u00e1zat neve.<br \/>\nMinden egy\u00e9b argumentum azonos form\u00e1ban ker\u00fcl \u00e1tad\u00e1sra <code>ExecuteClass<\/code>.<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"zametki\">Megjegyz\u00e9sek<\/h3>\n<p><\/p>\n<ul>\n<li><code>ExecuteGlobal<\/code>, <code>ExecuteClass<\/code> \u00e9s <code>ExecuteTable<\/code> ugyanolyan gyorsan m\u0171k\u00f6dnek.<\/li>\n<li><code>ExecuteGlobal<\/code> 20-szor gyorsabban, mint <code>ExecuteQuery<\/code> nagy adathalmazon (\u00e1tad\u00e1si id\u0151 &gt;0,01 m\u00e1sodperc).<\/li>\n<li><code>ExecuteGlobal<\/code>, <code>ExecuteClass<\/code> \u00e9s <code>ExecuteTable<\/code> ugyanazzal a strukt\u00far\u00e1val m\u0171k\u00f6dnek: <code>^global(key) = $lb(prop1, prop2, ..., propN)<\/code> ahol <code>key<\/code> \u2014 eg\u00e9sz sz\u00e1m.<\/li>\n<li>A <code>ExecuteGlobal<\/code>, <code>ExecuteClass<\/code> \u00e9s <code>ExecuteTable<\/code> t\u00e1mogatott \u00e9rt\u00e9kk\u00e9szlet <code>te<\/code> megegyezik a tartom\u00e1nnyal <code>mktime<\/code> \u00e9s az oper\u00e1ci\u00f3s rendszert\u0151l f\u00fcgg (<noindex><a rel=\"nofollow\" href=\"https:\/\/docs.microsoft.com\/en-us\/cpp\/c-runtime-library\/reference\/mktime-mktime32-mktime64?view=vs-2019\">windows<\/a><\/noindex>: 1970-01-01, <noindex><a rel=\"nofollow\" href=\"https:\/\/linux.die.net\/man\/3\/mktime\">Linux<\/a><\/noindex> 1900-01-01, <noindex><a rel=\"nofollow\" href=\"https:\/\/developer.apple.com\/library\/archive\/documentation\/System\/Conceptual\/ManPages_iPhoneOS\/man3\/mktime.3.html\">mac<\/a><\/noindex>). Haszn\u00e1lja a <code>%Id\u0151b\u00e9lyeg<\/code>az \u00e9rt\u00e9kek ezen tartom\u00e1nyon k\u00edv\u00fcli \u00e1tad\u00e1s\u00e1hoz, vagy haszn\u00e1ljon pandas dataframe-t, mivel ez a korl\u00e1toz\u00e1s csak a list\u00e1ra vonatkozik.<\/li>\n<li>A <code>ExecuteGlobal<\/code>, <code>ExecuteClass<\/code> \u00e9s <code>ExecuteTable<\/code> minden argumentum, a forr\u00e1sadatokon (glob\u00e1lis, oszt\u00e1ly vagy t\u00e1bl\u00e1zat) k\u00edv\u00fcl \u00e9s a v\u00e1ltoz\u00f3 opcion\u00e1lis.<\/li>\n<\/ul>\n<p><\/p>\n<h2 id=\"primery\">P\u00e9ld\u00e1k<\/h2>\n<p><\/p>\n<p>Teszt oszt\u00e1ly <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/intersystems-community\/PythonGateway\/blob\/master\/isc\/py\/test\/Person.cls\">isc.py.test.Person<\/a><\/noindex> tartalmaz egy met\u00f3dust, amely bemutatja az adatok \u00e1tad\u00e1s\u00e1nak minden v\u00e1ltozat\u00e1t:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">set global = \"isc.py.test.PersonD\"\nset class = \"isc.py.test.Person\"\nset table = \"isc_py_test.Person\"\nset query = \"SELECT * FROM isc_py_test.Person\"\n\n\/\/ K\u00f6z\u00f6s argumentumok\nset variable = \"df\"\nset type = \"dataframe\"\nset start = 1\nset end = $g(^isc.py.test.PersonD, start)\n\n\/\/ M\u00f3dszer 0: ExecuteGlobal argumentumok n\u00e9lk\u00fcl\nset sc = ##class(isc.py.Main).ExecuteGlobal(global, variable _ 0, type)\n\n\/\/ M\u00f3dszer 1: ExecuteGlobal argumentumokkal    \n\/\/ A glob\u00e1lis megad\u00e1s\u00e1n\u00e1l a mez\u0151nevek manu\u00e1lisan vannak megadva\n\/\/ globalKey - a szubriptn\u00e9v \nset labels = $lb(\"globalKey\", \"N\u00e9v\", \"Sz\u00fclet\u00e9siD\u00e1tum\", \"TS\", \"RandomTime\", \"\u00c9vekKor\", \"TizedesKor\", \"DuplaKor\", \"Bool\")\n\n\/\/ mask eggyel kevesebb elemet tartalmaz mint labels, mert a \"globalKey\" - a szubriptn\u00e9v\n\/\/ Kihagyjuk %%CLASSNAME\nset mask = \"-+dmt+++b\"\n\nset sc = ##class(isc.py.Main).ExecuteGlobal(global, variable _ 1, type, start, end, mask, labels)\n\n\/\/ M\u00f3dszer 2: ExecuteClass\nset sc = ##class(isc.py.Main).ExecuteClass(class, variable _ 2, type, start, end)\n\n\/\/ M\u00f3dszer 3: ExecuteTable\nset sc = ##class(isc.py.Main).ExecuteTable(table, variable _ 3, type, start, end)\n\n\/\/ M\u00f3dszer 4: ExecuteTable\nset sc = ##class(isc.py.Main).ExecuteQuery(query, variable _ 4, type)<\/code><\/pre>\n<p><\/p>\n<p>H\u00edvja meg a m\u00f3dszert <code>do ##class(isc.py.test.Person).Test()<\/code> hogy l\u00e1ssa, hogyan m\u0171k\u00f6dnek az adatok \u00e1tad\u00e1s\u00e1nak \u00f6sszes m\u00f3dszere.<\/p>\n<p><\/p>\n<h2 id=\"vspomogatelnye-metody\">Seg\u00e9dfunkci\u00f3k<\/h2>\n<p><\/p>\n<ul>\n<li><code>GetVariableInfo(v\u00e1ltoz\u00f3, soros\u00edt\u00e1s, .defin\u00e1lt, .t\u00edpus, .hossz)<\/code> \u2014 inform\u00e1ci\u00f3t kap a v\u00e1ltoz\u00f3r\u00f3l: l\u00e9tezik-e, oszt\u00e1ly \u00e9s a soros\u00edt\u00e1s hossza.<\/li>\n<li><code>GetVariableDefined(v\u00e1ltoz\u00f3, .defin\u00e1lt)<\/code> \u2014 l\u00e9tezik-e a v\u00e1ltoz\u00f3.<\/li>\n<li><code>GetVariableType(v\u00e1ltoz\u00f3, .t\u00edpus)<\/code> \u2014 a v\u00e1ltoz\u00f3 oszt\u00e1ly\u00e1t kapja meg.<\/li>\n<li><code>GetStatus()<\/code> \u2014 a Python oldal\u00e1n az utols\u00f3 kiv\u00e9telt kapja meg \u00e9s t\u00f6rli is azt.<\/li>\n<li><code>GetModuleInfo(module, .import\u00e1lt, .alias)<\/code> \u2014 kapja meg a modul v\u00e1ltoz\u00f3j\u00e1t \u00e9s az import\u00e1l\u00e1s st\u00e1tusz\u00e1t.<\/li>\n<li><code>GetFunctionInfo(function, .defin\u00e1lt, .t\u00edpus, .docs, .al\u00e1\u00edr\u00e1s, .\u00e9rvek)<\/code> \u2014 inform\u00e1ci\u00f3t kap a funkci\u00f3r\u00f3l.<\/li>\n<\/ul>\n<p><\/p>\n<h1 id=\"interoperabelnost\">Interoperabilit\u00e1s<\/h1>\n<p><\/p>\n<p>Most, hogy megtanulta megh\u00edvni a Python Gateway-t a termin\u00e1lb\u00f3l, kezdj\u00fck el haszn\u00e1lni a term\u00e9keinkben. Az alapja a Python-nal val\u00f3 interakci\u00f3nak ilyen m\u00f3don \u2014 <code>isc.py.ens.Operation<\/code>. Ez lehet\u0151v\u00e9 teszi sz\u00e1munkra:<\/p>\n<p><\/p>\n<ul>\n<li>K\u00f3d v\u00e9grehajt\u00e1sa Python-on<\/li>\n<li>Python kontextus ment\u00e9se\/ helyre\u00e1ll\u00edt\u00e1sa<\/li>\n<li>Adatok bet\u00f6lt\u00e9se \u00e9s lek\u00e9rdez\u00e9se Python-b\u00f3l<\/li>\n<\/ul>\n<p><\/p>\n<p>Alapvet\u0151en, a Python m\u0171velet egy burkol\u00f3 a <code>isc.py.Main<\/code>. M\u0171velet <code>isc.py.ens.Operation<\/code> lehet\u0151v\u00e9 teszi az interakci\u00f3t a Python folyamattal az InterSystems IRIS term\u00e9keib\u0151l. \u00d6t lek\u00e9rdez\u00e9st t\u00e1mogat:<\/p>\n<p><\/p>\n<ul>\n<li><code>isc.py.msg.ExecutionRequest<\/code> Python k\u00f3d v\u00e9grehajt\u00e1s\u00e1hoz. Visszaadja <code>isc.py.msg.ExecutionResponse<\/code> a v\u00e9grehajt\u00e1s eredm\u00e9ny\u00e9vel \u00e9s a k\u00e9rt v\u00e1ltoz\u00f3k \u00e9rt\u00e9keivel.<\/li>\n<li><code>isc.py.msg.StreamExecutionRequest<\/code> Python k\u00f3d v\u00e9grehajt\u00e1s\u00e1hoz. Visszaadja <code>isc.py.msg.StreamExecutionResponse<\/code> a v\u00e9grehajt\u00e1s eredm\u00e9ny\u00e9vel \u00e9s a k\u00e9rt v\u00e1ltoz\u00f3k \u00e9rt\u00e9keivel. Anal\u00f3g <code>isc.py.msg.ExecutionRequest<\/code>, de \u00e1ramot fogad \u00e9s ad vissza a sorok helyett.<\/li>\n<li><code>isc.py.msg.QueryRequest<\/code> SQL lek\u00e9rdez\u00e9s v\u00e9grehajt\u00e1s\u00e1nak eredm\u00e9ny\u00e9nek \u00e1tad\u00e1s\u00e1hoz. Visszaadja <code>Ens.Response<\/code>.<\/li>\n<li><code>isc.py.msg.GlobalRequest<\/code>\/<code>isc.py.msg.ClassRequest<\/code>\/<code>isc.py.msg.TableRequest<\/code> adatok glob\u00e1lis \/ oszt\u00e1ly \/ t\u00e1bl\u00e1zat \u00e1tvitel\u00e9hez. Visszat\u00e9r <code>Ens.Response<\/code>.<\/li>\n<li><code>isc.py.msg.SaveRequest<\/code> a Python kontextus ment\u00e9s\u00e9re. Visszat\u00e9r <code>Ens.StringResponse<\/code> a kontextus azonos\u00edt\u00f3j\u00e1val.<\/li>\n<li>\n<p><code>isc.py.msg.RestoreRequest<\/code> a Python kontextus helyre\u00e1ll\u00edt\u00e1s\u00e1hoz.<\/p>\n<p><\/p>\n<p>Ezen k\u00edv\u00fcl, <code>isc.py.ens.Operation<\/code> k\u00e9t be\u00e1ll\u00edt\u00e1ssal rendelkezik:<\/p>\n<p><\/p>\n<ul>\n<li><code>Initializer<\/code> \u2014 az interf\u00e9szt megval\u00f3s\u00edt\u00f3 oszt\u00e1ly kiv\u00e1laszt\u00e1sa <code>isc.py.init.Abstract<\/code>. Ezt haszn\u00e1lhatjuk funkci\u00f3k, modulok, oszt\u00e1lyok stb. bet\u00f6lt\u00e9s\u00e9re. Egyszer fut le a folyamat ind\u00edt\u00e1sakor.<\/li>\n<li><code>PythonLib<\/code> \u2014 (csak Linux alatt) ha bet\u00f6lt\u00e9si hib\u00e1kat l\u00e1tsz, \u00e1ll\u00edtsd be az \u00e9rt\u00e9k\u00e9t <code>libpython3.6m.so<\/code> vagy ak\u00e1r a Python k\u00f6nyvt\u00e1r teljes el\u00e9r\u00e9si \u00fatj\u00e1ra. <\/li>\n<\/ul>\n<p>\n<\/li>\n<\/ul>\n<p><\/p>\n<h2 id=\"sozdanie-biznes-processov\">\u00dczleti folyamatok l\u00e9trehoz\u00e1sa<\/h2>\n<p><\/p>\n<p>K\u00e9t oszt\u00e1ly \u00e1ll rendelkez\u00e9sre, amelyek megk\u00f6nny\u00edtik az \u00fczleti folyamatok fejleszt\u00e9s\u00e9t:<\/p>\n<p><\/p>\n<ul>\n<li><code>isc.py.ens.ProcessUtils<\/code> lehet\u0151v\u00e9 teszi az aktivit\u00e1sok annot\u00e1ci\u00f3inak kinyer\u00e9s\u00e9t v\u00e1ltoz\u00f3k behelyettes\u00edt\u00e9s\u00e9vel.<\/li>\n<li><code>isc.py.util.BPEmulator<\/code> k\u00f6nnyed\u00e9n tesztelhetj\u00fck az \u00fczleti folyamatokat Python alatt. Ez k\u00e9pes v\u00e9grehajtani az \u00fczleti folyamatot (Python nyelv\u0171 r\u00e9szeket) a jelenlegi folyamatban.<\/li>\n<\/ul>\n<p><\/p>\n<h2 id=\"podstanovka-peremennyh\">A v\u00e1ltoz\u00f3k behelyettes\u00edt\u00e9se.<\/h2>\n<p><\/p>\n<p>Minden \u00fczleti folyamat, amely \u00f6r\u00f6kl\u0151dik <code>isc.py.ens.ProcessUtils<\/code>, haszn\u00e1lhatja a <code>GetAnnotation(name)<\/code> met\u00f3dust az aktivit\u00e1s annot\u00e1ci\u00f3j\u00e1nak \u00e9rt\u00e9k\u00e9nek beszerez\u00e9s\u00e9re annak nev\u00e9n kereszt\u00fcl. Az aktivit\u00e1s annot\u00e1ci\u00f3ja v\u00e1ltoz\u00f3kat tartalmazhat, amelyeket az InterSystems IRIS oldal\u00e1n sz\u00e1molnak ki, miel\u0151tt Pythonba ker\u00fcln\u00e9nek. \u00cdme a v\u00e1ltoz\u00f3k behelyettes\u00edt\u00e9se:<\/p>\n<p><\/p>\n<ul>\n<li><code>${class:method:arg1:...:argN}<\/code> \u2014 met\u00f3dus h\u00edv\u00e1sa<\/li>\n<li><code>#{expr}<\/code> \u2014 k\u00f3d v\u00e9grehajt\u00e1sa ObjectScript nyelven.<\/li>\n<\/ul>\n<p><\/p>\n<p>P\u00e9lda el\u00e9rhet\u0151 a teszt \u00fczleti folyamatban <code>isc.py.test.Process<\/code>, p\u00e9ld\u00e1ul az aktivit\u00e1sban <code>Korrel\u00e1ci\u00f3s m\u00e1trix: Grafikon<\/code>: <code>f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png')<\/code>. Ebben a p\u00e9ld\u00e1ban:<\/p>\n<p><\/p>\n<ul>\n<li><code>#{process.WorkDirectory}<\/code> visszaadja az objektum WorkDirectory tulajdons\u00e1g\u00e1t <code>process<\/code>, amely az oszt\u00e1ly p\u00e9ld\u00e1nya, <code>isc.py.test.Process<\/code> azaz az aktu\u00e1lis \u00fczleti folyamat.<\/li>\n<li><code>${%PopulateUtils:Integer:1:100}<\/code> l\u00e1tni fogja, hogy a gomb megnyom\u00e1sa <code>Eg\u00e9sz sz\u00e1m<\/code> kapcsolat \u00e9s csatorn\u00e1k <code>%PopulateUtils<\/code>, \u00e1tadva az argumentumokat <code>1<\/code> \u00e9s <code>100<\/code>, visszaad egy v\u00e9letlenszer\u0171 eg\u00e9sz sz\u00e1mot a tartom\u00e1nyban <code>1...100<\/code>.<\/li>\n<\/ul>\n<p><\/p>\n<h2 id=\"testovyy-biznes-process\">Teszt \u00fczleti folyamat<\/h2>\n<p><\/p>\n<p>A tesztterm\u00e9k \u00e9s a teszt \u00fczleti folyamat alap\u00e9rtelmez\u00e9s szerint el\u00e9rhet\u0151ek a Python Gateway r\u00e9szek\u00e9nt. Haszn\u00e1latukhoz:<\/p>\n<p><\/p>\n<ol>\n<li>Futtasd a parancssorban: <code>pip install pandas matplotlib seaborn<\/code>. <\/li>\n<li>Futtasd az InterSystems IRIS parancsot: <code>do ##class(isc.py.test.CannibalizationData).Import()<\/code> a tesztadatok bet\u00f6lt\u00e9s\u00e9hez.<\/li>\n<li>Ind\u00edtsd el a term\u00e9ket <code>isc.py.test.Production<\/code>.<\/li>\n<li>K\u00fcldj\u00f6n egy <code>Ens.Request<\/code> be. <code>isc.py.test.Process<\/code>.<\/li>\n<\/ol>\n<p><\/p>\n<p>lek\u00e9rdez\u00e9st. N\u00e9zz\u00fck meg, hogyan m\u0171k\u00f6dik ez egy\u00fctt. Nyisd meg <code>isc.py.test.Process<\/code> a BPL szerkeszt\u0151ben:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Python Gateway az InterSystems IRIS-ben\" src=\"\/wp-content\/uploads\/2020\/02\/6f83b22e0167e2699d285f3e32bfe373.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h3 id=\"ispolnenie-koda-1\">K\u00f3d v\u00e9grehajt\u00e1sa<\/h3>\n<p><\/p>\n<p>A legfontosabb h\u00edv\u00e1s \u2014 Python k\u00f3d v\u00e9grehajt\u00e1sa:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Python Gateway az InterSystems IRIS-ben\" src=\"\/wp-content\/uploads\/2020\/02\/dafa6b8c878ae937b194ff577b86dc89.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A k\u00e9r\u00e9st haszn\u00e1lj\u00e1k <code>isc.py.msg.ExecutionRequest<\/code>, itt vannak a tulajdons\u00e1gai:<\/p>\n<p><\/p>\n<ul>\n<li><code>Code<\/code> \u2014 Python k\u00f3d.<\/li>\n<li><code>SeparateLines<\/code> \u2014 a k\u00f3dot sorokra osztani a v\u00e9grehajt\u00e1shoz. <code>$c(10)<\/code> (<code>n<\/code>) vonalak elv\u00e1laszt\u00e1s\u00e1ra haszn\u00e1lhat\u00f3. Ne felejts\u00fck el, hogy NEM aj\u00e1nlott az \u00fczenetet egyszerre teljes eg\u00e9sz\u00e9ben feldolgozni, ez a funkci\u00f3 csak r\u00e9szleges feldolgoz\u00e1sra k\u00e9sz\u00fclt. <code>def<\/code> \u00e9s hasonl\u00f3 t\u00f6bb soros kifejez\u00e9sekhez. Alap\u00e9rtelmez\u00e9s szerint <code>0<\/code>.<\/li>\n<li><code>V\u00e1ltoz\u00f3k<\/code> \u2014 vessz\u0151vel elv\u00e1lasztott v\u00e1ltoz\u00f3k list\u00e1ja, amelyeket hozz\u00e1adunk a v\u00e1laszhoz.<\/li>\n<li><code>Serialization<\/code> \u2014 Hogyan lehet soros\u00edtani a v\u00e1ltoz\u00f3kat, amelyeket vissza szeretn\u00e9nk adni. Lehet\u0151s\u00e9gek: <code>Str<\/code>, <code>Repr<\/code>, <code>JSON<\/code>, <code>Pickle<\/code> \u00e9s <code>Dill<\/code>, alap\u00e9rtelmez\u00e9s szerint <code>Str<\/code>.<\/li>\n<\/ul>\n<p><\/p>\n<p>Ebben az esetben csak be\u00e1ll\u00edtjuk a tulajdons\u00e1got <code>Code<\/code>, \u00edgy a t\u00f6bbi tulajdons\u00e1g az alap\u00e9rtelmezett \u00e9rt\u00e9keket haszn\u00e1lja. Be\u00e1ll\u00edtjuk a h\u00edv\u00e1s\u00e1val <code>process.GetAnnotation(\"Import pandas\")<\/code>, amely v\u00e9grehajt\u00e1s k\u00f6zben visszaadja az annot\u00e1ci\u00f3t a v\u00e1ltoz\u00f3k behelyettes\u00edt\u00e9se ut\u00e1n. V\u00e9g\u00fcl a k\u00f3d <code>import pandas as pd<\/code> \u00e1tad\u00e1sra ker\u00fcl Pythonba. <code>GetAnnotation<\/code> hasznos lehet t\u00f6bb soros Python szkriptek megszerz\u00e9s\u00e9re, de ennek a m\u00f3dszernek nincs korl\u00e1toz\u00e1sa a k\u00f3d megszerz\u00e9s\u00e9re. A tulajdons\u00e1got <code>Code<\/code> tetsz\u0151leges m\u00f3don be\u00e1ll\u00edthatja.<\/p>\n<p><\/p>\n<h3 id=\"poluchenie-peremennyh\">V\u00e1ltoz\u00f3k lek\u00e9rdez\u00e9se<\/h3>\n<p><\/p>\n<p>Egy m\u00e1sik \u00e9rdekes h\u00edv\u00e1s a haszn\u00e1lat\u00e1val <code>isc.py.msg.ExecutionRequest<\/code> \u2014 <code>Korrel\u00e1ci\u00f3s M\u00e1trix: T\u00e1bl\u00e1zatos<\/code>:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Python Gateway az InterSystems IRIS-ben\" src=\"\/wp-content\/uploads\/2020\/02\/8824e49ecaa448551c830e9a90eb5781.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A Python oldalon sz\u00e1m\u00edtja ki a Korrel\u00e1ci\u00f3s M\u00e1trixot, \u00e9s a v\u00e1ltoz\u00f3t <code>corrmat<\/code> visszahozza InterSystems IRIS-be JSON form\u00e1tumban, a lek\u00e9rdez\u00e9si tulajdons\u00e1gok be\u00e1ll\u00edt\u00e1s\u00e1val:<\/p>\n<p><\/p>\n<ul>\n<li><code>V\u00e1ltoz\u00f3k<\/code>: <code>\"corrmat\"<\/code><\/li>\n<li><code>Serialization<\/code>: <code>\"JSON\"<\/code><\/li>\n<\/ul>\n<p><\/p>\n<p>L\u00e1thatjuk az eredm\u00e9nyeket a Visual Trace-ben:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Python Gateway az InterSystems IRIS-ben\" src=\"\/wp-content\/uploads\/2020\/02\/713bcade8cb1018f2974cba2cab712b7.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00c9s ha erre az \u00e9rt\u00e9kre sz\u00fcks\u00e9g\u00fcnk lenne a BP-ben, \u00edgy \u00e9rhetj\u00fck el: <code>callresponse.Variables.GetAt(\"corrmat\")<\/code>.<\/p>\n<p><\/p>\n<h3 id=\"peredacha-dannyh-1\">Adat\u00e1tvitel<\/h3>\n<p><\/p>\n<p>Most besz\u00e9lj\u00fcnk arr\u00f3l, hogyan lehet adatokat \u00e1tvinni az InterSystems IRIS-b\u0151l Pythonba, minden adat\u00e1tvitelhez ezen az interf\u00e9szen kereszt\u00fcl val\u00f3sul meg <code>isc.py.msg.DataRequest<\/code>, amely a k\u00f6vetkez\u0151 tulajdons\u00e1gokat biztos\u00edt:<\/p>\n<p><\/p>\n<ul>\n<li><code>Variable<\/code> \u2014 Python v\u00e1ltoz\u00f3, amelybe az adatok ker\u00fclnek.<\/li>\n<li><code>T\u00edpus<\/code> \u2014 v\u00e1ltoz\u00f3 t\u00edpusa: <code>dataframe<\/code> (pandas dataframe) vagy <code>list<\/code>.<\/li>\n<li><code>Namespace<\/code> \u2014 ter\u00fclet, ahonnan az adatokat nyerj\u00fck. A csomagnak el\u00e9rhet\u0151nek kell lennie ezen a ter\u00fcleten. Ez lehet egy term\u00e9kt\u00e1mogat\u00e1s n\u00e9lk\u00fcli ter\u00fclet. <code>isc.py<\/code> Ezen interf\u00e9sz alapj\u00e1n 4 oszt\u00e1ly\u00fa lek\u00e9rdez\u00e9s lett megval\u00f3s\u00edtva:<\/li>\n<\/ul>\n<p><\/p>\n<p>\u2014 \u00e1ll\u00edtsa be a<\/p>\n<p><\/p>\n<ul>\n<li><code>isc.py.msg.QueryRequest<\/code> Query <code>SQL lek\u00e9rdez\u00e9s tov\u00e1bb\u00edt\u00e1s\u00e1ra.<\/code> Class<\/li>\n<li><code>isc.py.msg.ClassRequest<\/code> Query <code>oszt\u00e1ly adattov\u00e1bb\u00edt\u00e1s\u00e1ra.<\/code> \u2014 \u00e1ll\u00edtsa be a<\/li>\n<li><code>isc.py.msg.TableRequest<\/code> Table <code>adatok t\u00e1bl\u00e1zatra t\u00f6rt\u00e9n\u0151 tov\u00e1bb\u00edt\u00e1s\u00e1hoz.<\/code> Global<\/li>\n<li><code>isc.py.msg.GlobalRequest<\/code> Table <code>a glob\u00e1lis adatok tov\u00e1bb\u00edt\u00e1s\u00e1hoz.<\/code> A tesztel\u00e9si folyamat sor\u00e1n figyeljen a tev\u00e9kenys\u00e9gre<\/li>\n<\/ul>\n<p><\/p>\n<p>ki van mutatva m\u0171k\u00f6d\u00e9s k\u00f6zben. <code>RAW<\/code>, ahol <code>isc.py.msg.QueryRequest<\/code> Python kontextus ment\u00e9se\/vissza\u00e1ll\u00edt\u00e1sa<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Python Gateway az InterSystems IRIS-ben\" src=\"\/wp-content\/uploads\/2020\/02\/f6a2a520594341b9d37110bcd24b1015.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h3 id=\"sohranenievosstanovlenie-python-konteksta\">V\u00e9g\u00fcl meg tudjuk menteni a Python kontextust az InterSystems IRIS-ben, ehhez elk\u00fcldj\u00fck<\/h3>\n<p><\/p>\n<p>argumentumokkal: <code>isc.py.msg.SaveRequest<\/code> Mask<\/p>\n<p><\/p>\n<ul>\n<li><code>\u2014 Csak a maszkot kiel\u00e9g\u00edt\u0151 v\u00e1ltoz\u00f3k ker\u00fclnek ment\u00e9sre. T\u00e1mogatja<\/code> \"Data*, Figure?\" <code>*<\/code> \u00e9s <code>?<\/code>. P\u00e9lda: <code>\"Adatok*, \u00c1bra?\"<\/code>MaxLength <code>*<\/code>.<\/li>\n<li><code>MaxLength<\/code> \u2014 A maxim\u00e1lis egyenleg hossza. Ha a v\u00e1ltoz\u00f3 soros\u00edt\u00e1sa hosszabb, mint ez, akkor figyelmen k\u00edv\u00fcl lesz hagyva. \u00c1ll\u00edtsa 0-ra, hogy b\u00e1rmilyen hossz\u00fas\u00e1g\u00fa v\u00e1ltoz\u00f3kat kapjon. Alap\u00e9rtelmezett <code>$$$MaxStringLength<\/code>.<\/li>\n<li><code>N\u00e9v<\/code> \u2014 A kontextus neve (opcion\u00e1lis).<\/li>\n<li><code>Le\u00edr\u00e1s<\/code> \u2014 A kontextus le\u00edr\u00e1sa (opcion\u00e1lis).<\/li>\n<\/ul>\n<p><\/p>\n<p>Visszaadja <code>Ens.StringResponse<\/code> a <code>Id<\/code> a mentett kontextus. A tesztel\u00e9si folyamat sor\u00e1n figyelje meg az aktivit\u00e1st <code>Kontextus ment\u00e9se<\/code>.<\/p>\n<p><\/p>\n<p>A megfelel\u0151 k\u00e9r\u00e9s <code>isc.py.msg.RestoreRequest<\/code> bet\u00f6lti a kontextust az InterSystems IRIS-b\u0151l Pythonba:<\/p>\n<p><\/p>\n<ul>\n<li><code>ContextId<\/code> \u2014 a kontextus azonos\u00edt\u00f3ja.<\/li>\n<li><code>Tiszt\u00edt<\/code> \u2014 t\u00f6r\u00f6lje a kontextust a vissza\u00e1ll\u00edt\u00e1s el\u0151tt.<\/li>\n<\/ul>\n<p><\/p>\n<h1 id=\"jupyter-notebook\">Jupyter Notebook<\/h1>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/jupyter.org\/\">Jupyter Notebook<\/a><\/noindex> \u2014 ez egy ny\u00edlt forr\u00e1sk\u00f3d\u00fa webalkalmaz\u00e1s, amely lehet\u0151v\u00e9 teszi k\u00f3dot, vizualiz\u00e1ci\u00f3kat \u00e9s sz\u00f6veget tartalmaz\u00f3 jegyzetf\u00fczetek l\u00e9trehoz\u00e1s\u00e1t \u00e9s k\u00f6zz\u00e9t\u00e9tel\u00e9t. A Python Gateway lehet\u0151v\u00e9 teszi a BPL folyamatok megtekint\u00e9s\u00e9t \u00e9s szerkeszt\u00e9s\u00e9t Jupyter Notebook form\u00e1j\u00e1ban. K\u00e9rj\u00fck, vegye figyelembe, hogy jelenleg a Python 3 standard v\u00e9grehajt\u00f3t haszn\u00e1lja.<\/p>\n<p><\/p>\n<p>Ez a b\u0151v\u00edtm\u00e9ny azt felt\u00e9telezi, hogy az annot\u00e1ci\u00f3k Python k\u00f3dot tartalmaznak, \u00e9s az aktivit\u00e1sok neveit haszn\u00e1lj\u00e1k el\u0151k\u00e9sz\u00edtett c\u00edmekk\u00e9nt. Most m\u00e1r lehet\u0151s\u00e9g van a PythonGateway \u00fczleti folyamatainak fejleszt\u00e9s\u00e9re Jupyter Notebookban. Az al\u00e1bbiak \u00e9rhet\u0151k el: <\/p>\n<p><\/p>\n<ul>\n<li>\u00daj \u00fczleti folyamatok l\u00e9trehoz\u00e1sa<\/li>\n<li>\u00dczleti folyamatok t\u00f6rl\u00e9se<\/li>\n<li>\u00daj aktivit\u00e1sok l\u00e9trehoz\u00e1sa<\/li>\n<li>Aktivit\u00e1sok m\u00f3dos\u00edt\u00e1sa<\/li>\n<li>Aktivit\u00e1sok t\u00f6rl\u00e9se<\/li>\n<\/ul>\n<p><\/p>\n<p>\u00cdme <noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/mZizgVtZ014\">dem\u00f3 vide\u00f3<\/a><\/noindex>. \u00c9s n\u00e9h\u00e1ny k\u00e9perny\u0151k\u00e9p:<\/p>\n<p><\/p>\n<h2 id=\"provodnik-processov\">Folyamat Explorer<\/h2>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Python Gateway az InterSystems IRIS-ben\" src=\"\/wp-content\/uploads\/2020\/02\/6da1aa0a026c34238c57f96e82742bb9.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h2 id=\"redaktor-processa\">Folyamat szerkeszt\u0151<\/h2>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Python Gateway az InterSystems IRIS-ben\" src=\"\/wp-content\/uploads\/2020\/02\/651031fe9792cc1c5926aa386f4e37fd.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h2 id=\"ustanovka-1\">Telep\u00edt\u00e9s<\/h2>\n<p><\/p>\n<ol>\n<li>Sz\u00fcks\u00e9ge van az InterSystems IRIS 2019.2+ verzi\u00f3ra.<\/li>\n<li>Telep\u00edtse a PythonGateway v0.8+ (csak a sz\u00fcks\u00e9ges) <code>isc.py.util.Jupyter<\/code>, <code>isc.py.util.JupyterCheckpoints<\/code> \u00e9s <code>isc.py.ens.ProcessUtils<\/code>).<\/li>\n<li>Friss\u00edtse az ObjectScript k\u00f3dot a t\u00e1rol\u00f3b\u00f3l.<\/li>\n<li>Futtassa a <code>do ##class(isc.py.util.Jupyter).Install()<\/code> \u00e9s k\u00f6vesse az utas\u00edt\u00e1sokat.<\/li>\n<\/ol>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/intersystems-community\/PythonGateway\/tree\/master\/jupyter\">k\u00f3dk\u00f6nyvt\u00e1rra l\u00e9p\u00e9s\u00e9vel \u00e9rheti el.<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h1 id=\"vyvody\">K\u00f6vetkeztet\u00e9sek<\/h1>\n<p><\/p>\n<p>MLToolkit \u2014 egy eszk\u00f6zk\u00e9szlet, amelynek c\u00e9lja a modellek \u00e9s a tranzakci\u00f3s k\u00f6rnyezet \u00f6sszekapcsol\u00e1sa, lehet\u0151v\u00e9 t\u00e9ve, hogy az \u00e9p\u00edtett modellek k\u00f6nnyen haszn\u00e1lhat\u00f3ak legyenek k\u00f6zvetlen\u00fcl az \u00fczleti folyamataiban. A Python Gateway a MLToolkit r\u00e9sze, \u00e9s lehet\u0151v\u00e9 teszi a Python nyelv integr\u00e1l\u00e1s\u00e1t, hogy b\u00e1rmilyen, Python nyelven k\u00e9sz\u00fclt g\u00e9pi tanul\u00e1si algoritmust vez\u00e9nyeljen, lehet\u0151v\u00e9 t\u00e9ve sz\u00e1mos k\u00e9sz k\u00f6nyvt\u00e1r felhaszn\u00e1l\u00e1s\u00e1t gyorsan alkalmazkod\u00f3, automatiz\u00e1lt analitikai AI\/ML megold\u00e1sok l\u00e9trehoz\u00e1s\u00e1ra az InterSystems IRIS platformon.<\/p>\n<p><\/p>\n<h1 id=\"ssylki\">Hivatkoz\u00e1sok<\/h1>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/intersystems\/blog\/473452\/\">El\u0151z\u0151 cikk<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/openexchange.intersystems.com\/package\/PythonGateway\">Python Gateway<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/openexchange.intersystems.com\/package\/Python-Gateway-Samples\">Python Gateway mint\u00e1k<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/intersystems-community\/Convergent-Analytics\">Convergent-Analytics<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.python.org\/downloads\/release\/python-367\/\">Python 3.6.7 64 bit<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/docs.python.org\/3.6\/tutorial\/index.html\">Dokument\u00e1ci\u00f3 \u00e9s Python tanfolyamok<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h1 id=\"mltoolkit\">MLToolkit<\/h1>\n<p><\/p>\n<p>Az MLToolkit felhaszn\u00e1l\u00f3i csoport egy priv\u00e1t GitHub-repozit\u00f3rium, amely az InterSystems v\u00e1llalati GitHub-szervezet\u00e9nek r\u00e9szek\u00e9nt j\u00f6tt l\u00e9tre. K\u00fcl\u00f6n\u00f6sen a k\u00fcls\u0151 felhaszn\u00e1l\u00f3k sz\u00e1m\u00e1ra k\u00e9sz\u00fclt, akik telep\u00edtik, tanulm\u00e1nyozz\u00e1k vagy m\u00e1r haszn\u00e1lj\u00e1k az MLToolkit komponenseit, bele\u00e9rtve a Python Gateway-t. A csoportban sz\u00e1mos megval\u00f3s\u00edtott esettanulm\u00e1ny \u00e9rhet\u0151 el (forr\u00e1sk\u00f3ddal \u00e9s tesztadatokkal) a marketing, gy\u00e1rt\u00e1s, orvostudom\u00e1ny \u00e9s sok m\u00e1s ter\u00fcleten. Az ML Toolkit felhaszn\u00e1l\u00f3i csoporthoz val\u00f3 csatlakoz\u00e1shoz k\u00e9rj\u00fck, k\u00fcldj\u00f6n egy r\u00f6vid \u00fczenetet az al\u00e1bbi e-mail c\u00edmre: <noindex><a rel=\"nofollow\" href=\"mailto:MLToolkit@intersystems.com?subject=MLToolkit%20user%20group&amp;body=Hello.%0A%0APlease%20add%20me%20to%20ML%20Toolkit%20user%20group%3A%0A%0A-%20GitHub%20username%3A%20%0A%0A-%20Name%3A%20%0A%0A-%20Company%3A%20%0A%0A-%20Position%3A%0A-%20Country%3A%20%0A%0A\">MLToolkit@intersystems.com<\/a><\/noindex> \u00e9s az \u00fczenetben k\u00e9rj\u00fck, adja meg az al\u00e1bbi adatokat:<\/p>\n<p><\/p>\n<ul>\n<li>GitHub felhaszn\u00e1l\u00f3n\u00e9v<\/li>\n<li>Szervezet (ahol dolgozik vagy tanul)<\/li>\n<li>Poz\u00edci\u00f3 (a t\u00e9nyleges poz\u00edci\u00f3ja a szervezet\u00e9b\u0151l, vagy \"Di\u00e1k\", vagy \"Szabad\u00fasz\u00f3\").<\/li>\n<li>Orsz\u00e1g<\/li>\n<\/ul>\n<p><\/p>\n<p>Azoknak, akik elolvast\u00e1k a cikket \u00e9s \u00e9rdekl\u0151dnek az InterSystems IRIS lehet\u0151s\u00e9gei ir\u00e1nt, mint a mesters\u00e9ges intelligencia \u00e9s g\u00e9pi tanul\u00e1s fejleszt\u00e9si vagy \u00fczemeltet\u00e9si platform, javasoljuk, hogy besz\u00e9lj\u00fck meg az \u00d6n v\u00e1llalata sz\u00e1m\u00e1ra \u00e9rdekes lehets\u00e9ges forgat\u00f3k\u00f6nyveket. Sz\u00edvesen elemezz\u00fck a v\u00e1llalata ig\u00e9nyeit, \u00e9s k\u00f6z\u00f6sen meghat\u00e1rozzuk a cselekv\u00e9si tervet; a mesters\u00e9ges intelligenci\u00e1val \u00e9s g\u00e9pi tanul\u00e1ssal foglalkoz\u00f3 szak\u00e9rt\u0151i csapatunk kontaktelektronikus levelez\u00e9si c\u00edme: <noindex><a rel=\"nofollow\" href=\"mailto:MLToolkit@intersystems.com\">MLToolkit@intersystems.com<\/a><\/noindex>.<\/p>\n<p>Forr\u00e1s: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/intersystems\/blog\/486984\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 Python Gateway \u2014 \u043a\u043e\u043c\u044c\u044e\u043d\u0438\u0442\u0438-\u043f\u0440\u043e\u0435\u043a\u0442\u0443 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u0434\u043b\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0434\u0430\u043d\u043d\u044b\u0445 InterSystems IRIS. \u042d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0440\u043a\u0435\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Python (\u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0441\u0440\u0435\u0434\u0430 \u0434\u043b\u044f \u043c\u043d\u043e\u0433\u0438\u0445 Data Scientists), \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u043d\u043e\u0433\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u044b\u0445, \u0440\u043e\u0431\u043e\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 AI\/ML-\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 InterSystems IRIS. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u043f\u043e\u043a\u0430\u0436\u0443 \u043a\u0430\u043a [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":41222,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-41221","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 Python Gateway \u2014 \u043a\u043e\u043c\u044c\u044e\u043d\u0438\u0442\u0438-\u043f\u0440\u043e\u0435\u043a\u0442\u0443 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u0434\u043b\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0434\u0430\u043d\u043d\u044b\u0445 InterSystems IRIS.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/hu\/blog\/python-gateway-v-intersystems-iris\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"hu_HU\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Python Gateway \u0432 InterSystems IRIS | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 Python Gateway \u2014 \u043a\u043e\u043c\u044c\u044e\u043d\u0438\u0442\u0438-\u043f\u0440\u043e\u0435\u043a\u0442\u0443 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u0434\u043b\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0434\u0430\u043d\u043d\u044b\u0445 InterSystems IRIS.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/hu\/blog\/python-gateway-v-intersystems-iris\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-02-06T17:42:46+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-06T17:42:46+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Python Gateway az InterSystems IRIS-ben | ProHoster","description":"Ez a cikk a Python Gateway-nek szentelhet\u0151 \u2014 k\u00f6z\u00f6ss\u00e9gi projekt ny\u00edlt forr\u00e1sk\u00f3d\u00fa adatform\u00e1tum az InterSystems IRIS platformhoz.","canonical_url":"https:\/\/prohoster.info\/hu\/blog\/python-gateway-v-intersystems-iris","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hu_HU","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Python Gateway \u0432 InterSystems IRIS | ProHoster","og:description":"\u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 Python Gateway \u2014 \u043a\u043e\u043c\u044c\u044e\u043d\u0438\u0442\u0438-\u043f\u0440\u043e\u0435\u043a\u0442\u0443 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u0434\u043b\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0434\u0430\u043d\u043d\u044b\u0445 InterSystems IRIS.","og:url":"https:\/\/prohoster.info\/hu\/blog\/python-gateway-v-intersystems-iris","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-02-06T17:42:46+00:00","article:modified_time":"2020-02-06T17:42:46+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"41221","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 00:21:33","updated":"2022-09-30 00:32:37","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/41221","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/comments?post=41221"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/41221\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media\/41222"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=41221"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=41221"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=41221"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}