Article
· Sept 9 4m de lecture

Native Python dans IRIS

Bonjour la communauté

J'ai déjà expérimenté Embedded Python dans IRIS ; cependant, je n'ai pas encore eu l'occasion d'implémenter IRIS en utilisant Native Python. Dans cet article, je souhaite décrire les étapes que j'ai suivies pour commencer à apprendre et à implémenter IRIS dans la source Python. Je tiens également à remercier @Guillaume Rongier et @Luis Angel Pérez Ramos pour leur aide dans la résolution des problèmes que j'ai rencontrés lors de ma récente installation PIP d'IRIS en Python, ce qui lui a finalement permis de fonctionner correctement.

Commençons par écrire IRIS en Python.

Tout d'abord, vous devez installer le fichier intersystems_irispython-3.2.0-py3-none-any.whl à partir du dépôt github. Je l'ai téléchargé et installé sur ma machine Windows.

py -m pip install intersystems_irispython-3.2.0-py3-none-any.whl

J'ai vérifié que les packages sont installés sur ma machine en exécutant py -m pip list

intersystems-irispython 3.2.0
iris                    0.0.5

Maintenant, je suis prêt à commencer à écrire en Python. J'ai créé un fichier .py et importé le package iris au-dessus de la classe.

Établissons maintenant la connexion à IRIS en utilisant la méthode de connexion et créons l'objet de connexion pour instancier l'objet iris.IRIS en utilisant « createIRIS » et c'est l'étape cruciale pour procéder à d'autres opérations.

import iris
impor time

args = {'hostname':'127.0.0.1', 'port':1972,'namespace':'LEARNING', 'username':'_SYSTEM', 'password':'SYS'}

try:
    """
    some other ways instead of kwargs
    conn = iris.connect(hostname='127.0.0.1', port=1972, namespace='LEARNING',username='_SYSTEM',password='SYS')
    """
    conn = iris.connect(**args)
    # A new IRIS object that uses the given connection.
    irispy = iris.createIRIS(conn)

    print('connected!')
except Exception as e:
    # Handling the exception and printing the error
    print(f"An error occurred: {e}")
    

Parlons maintenant des méthodes pour COS et global

Une fois que vous avez créé avec succès un objet IRIS, il est maintenant prêt à utiliser diverses opérations

set : Cette fonction est utilisée pour définir les valeurs des globales dans la base de données IRIS

1. Le premier paramètre est la valeur définie

2. Le deuxième paramètre est le nom global

3. *args - le troisième paramètre est l'indice(s)

def set_global(value=None,gbl=None,*args):
    #set method is in _IRIS from iris package
    irispy.set('set from irispy','mygbl','a',str(time.time()))
    print('global set done!')

set_global()

kill : Cette fonction est utilisée pour supprimer le global de la base de données

def kill_global():
    irispy.kill('mygbl')
    print('global kill done!')

IsDefined: équivaut à $data : vérifier qu'il existe

def data_isDefined():
    # equal to $data
    print(irispy.isDefined('mygbl','a')) # o/p 10
    print(irispy.isDefined('mygbl','a','1724996313.480835')) # o/p 1

nextSubscript: équivaut à $Order

irispy.nextSubscript(0,'mygbl','a')

tStart, tCommit and tRollback: équivaut aux TStart, TCommit, TRollback

def global_transaction_commit():
    irispy.tStart()
    print(irispy.getTLevel())
    irispy.set('set from irispy','mygbl','trans',str(time.time()))
    irispy.tCommit()

def global_transaction_rollback():
    irispy.tStart()
    print(irispy.getTLevel())
    irispy.set('set from irispy','mygbl','trans1',str(time.time()))
    irispy.tRollback() # tRollbackOne()

lock et unlock: par défaut verrouillage incrémentiel/verrouillage exclusif

def global_lock():
    #default exclusive lock
    s = irispy.lock('',1,'^mygbl')
    time.sleep(10) # verify the lock in locktab
    irispy.unlock('','^mygbl')
    
def global_shared_lock():
    s = irispy.lock('S',1,'^mygbl')
    time.sleep(10)
    irispy.unlock('S','^mygbl')

node: subscript level équivaut à $Order

def node_traversal():
    # subscript level traversal like $Order
    for mrn in irispy.node('^mygbl'):
         for phone in irispy.node('^mygbl',mrn):
            print(f'patient mrn {mrn} and phone number: {phone}')
            
"""
o/p
patient mrn 912 and phone number: 3166854791
patient mrn 991 and phone number: 78050314
patient mrn 991 and phone number: 9128127353
"""

Le nœud, le parcours de valeur et les définitions de classe ainsi que ses membres sont abordés dans le prochain article.

Vous pouvez consulter la documentation IRIS pour toutes les fonctions.

Discussion (0)1
Connectez-vous ou inscrivez-vous pour continuer