Olá comunidade
Nós experimentamos anteriormente o Python embutido em IRIS; no entanto, eu ainda não tive a oportunidade de implementar IRIS usando Python nativo. Nesse artigo, vou percorrer os passos que eu usei para começar a aprender e implementar IRIS dentro da fonte Python. Eu também gostaria de agradecer @Guillaume Rongier e @Luis Angel Pérez Ramos pela ajuda resolvendo os problemas que encontrei durante minha recente instalação PIP de IRIS no Python, que eu habilitei para funcionar adequadamente.
Vamos começar a escrever IRIS em Python.
Em primeiro lugar, você precisa instalar o arquivo intersystems_irispython-3.2.0-py3-none-any.whl do repositório github. Eu fiz o download e baixei na minha máquina windows.
py -m pip install intersystems_irispython-3.2.0-py3-none-any.whl
Verifiquei que os pacotes estão instalados na minha máquina executando py -m pip list
intersystems-irispython 3.2.0 iris 0.0.5
Agora estamos prontos para começar a escrever o Python. Eu criei um arquivo .py e importei um pacote iris em cima da classe.
Agora, vamos estabelecer a conexão ao IRIS usando o método de conexão e criar e usar o objeto de conexão para instanciar o objeto iris.IRIS usando o "createIRIS" e esse é o passo crucial para seguir com operações mais adiante.
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}")
Agora, vamos falar sobre os métodos para COS e globais.
Uma vez que você criou com sucesso um objeto IRIS, agora está pronto para usar várias operações.
set : Essa função é usada para definir os valores de globais na base de dados IRIS.
1. O primeiro parâmetro é o valor
2. Segundo parâmetro é o nome da global
3. *args - o terceiro parâmetro são subscritos.
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: Essa função é usada para deletar a global da base de dados
def kill_global():
irispy.kill('mygbl')
print('global kill done!')
IsDefined: o mesmo que $data: verifica se 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: Igual a $Order
irispy.nextSubscript(0,'mygbl','a')
tStart, tCommit e tRollback: o mesmo que 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 e unlock: por default lock incremental/lock exclusivo
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: nó de subscrito da árvore mesmo que $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
"""
O nó, valor de árvore e definições de classe e seus membros estão cobertos no próximo artigo.
Você pode ver a referência na documentação para todas as funções.