Find

Digest
· Sep 9, 2024

InterSystems Developers Publications, Week September 02 - 08, 2024, Digest

Articles
#InterSystems IRIS
#InterSystems IRIS for Health
#Other
Announcements
#InterSystems IRIS
#IRIS contest
#Open Exchange
#HealthShare
#InterSystems Ideas Portal
#Learning Portal
#Global Masters
#InterSystems Reports (Logi)
#Developer Community Official
Questions
#InterSystems IRIS
#InterSystems IRIS for Health
#Ensemble
$ZDATETIME($h,3,1,3)
By Krishnaveni Kapu
#Health Connect
#HealthShare
September 02 - 08, 2024Week at a GlanceInterSystems Developer Community
Article
· Sep 9, 2024 4m read

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
Log in or sign up to continue
Digest
· Sep 9, 2024

Publications des développeurs d'InterSystems, semaine Septembre 02 - 08, 2024, Résumé

Septembre 02 - 08, 2024Week at a GlanceInterSystems Developer Community
Digest
· Sep 9, 2024

Nuevas publicaciones en la Comunidad de InterSystems, 2-8 septiembre

Article
· Sep 9, 2024 1m read

Cómo leer mediante código un archivo CSV línea a línea

Rúbrica de preguntas frecuentes de InterSystems

Esto se puede lograr utilizando el procedimiento CSV() de la clase %SQL.Util.Procedures . A continuación, podéis ver un ejemplo de uso (suponiendo que el archivo `test.csv` se encuentra en `c:\temp`):

 Set rowtype="Name VARCHAR(50),UID VARCHAR(50), PHONE VARCHAR(50)"
 Set filename="c:\temp\test.csv"
 Set result=##class(%SQL.Statement).%ExecDirect(,"call %SQL_Util.CSV(,?,?)",.rowtype,.filename)
 Set rset =result.%NextResult()
 
 // To display all results, use do rset.%Display()
 While rset.%Next() {
     Write "Name:",rset.%GetData(1)," UID:",rset.%GetData(2)," PHONE:",rset.%GetData(3),!
     }

 Set rset="",result=""
 Quit

Al ejecutar lo anterior, podéis acceder a cada fila y a cada campo como un conjunto de resultados:

USER>do ^CSV
Name    UID     PHONE
aaa     0001    080-1111-1111
bbb     0003    090-2222-2222
ccc     0009    050-3333-3333
ddd     0010    0120-17-1972
4 Rows(s) Affected

Podéis consultar también la documentación oficial que hace referencia a la clase %SQL.Util.Procedures aquí.

Discussion (0)1
Log in or sign up to continue