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
PythonPython
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}")
PythonPython
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()
PythonPython
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!')
PythonPython
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
ObjectScriptObjectScript
nextSubscript: équivaut à $Order
irispy.nextSubscript(0,'mygbl','a')
ObjectScriptObjectScript
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()
ObjectScriptObjectScript
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')
PythonPython
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
"""
ObjectScriptObjectScript
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.