Artigo
· Set. 22, 2022 5min de leitura

Python e IRIS na prática - com exemplos!

Aqui você vai encontrar um programa simples que usa Python em um ambiente de desenvolvimento IRIS e outro programa simples que sua ObjectScript em um ambiente de desenvolvimento Python. Além disso, gostaria de compartilhar alguns dos problemas que tive enquanto aprendia a implementar esses códigos.

 

Python em ambiente IRIS

Digamos, por exemplo, que você está desenvolvendo no IRIS e tem um problema que acha mais fácil ou mais eficiente de se resolver com Python.

Você pode simplesmente trocar o ambiente: crie seu método como qualquer outro, mas ao final do nome e de suas especificações, adicione [ Language = python ]:

 

Você pode usar todo tipo de argumento no método e, para acessá-los, a lógica é exatamente a mesma que em COS:

Temos um argumento %String, chamado Arg, e um argumento OtherArg que vem de uma classe customizada. Essa classe pode ter propriedades como Title e Author. Você pode acessá-las pelo nome:

Esse método retorna um output desta forma:

 

Para acessar métodos de classe, é basicamente o mesmo. Se há um método na classe Demo.Books.PD.Books (do OtherArg), chamado "CreateString", que concatena o título e o autor dados para algo do tipo "Title: <Title>; Author: <Author>", então, adicionar isso no final do nosso método python:

acrescentará ao output:

Para acessar o método, só é necessário OtherArg.CreateString(), mas eu escolhi passar os mesmos valores em OtherArg para o método com CreateString(OtherArg) para que os outputs ficassem parecidos e, consequentemente, o código ficasse mais simples.

 

ObjectScript em ambiente Python

Também pode haver situações em que você está desenvolvendo em ambiente Python, mas deseja as ferramentas do ObjectScript para ajudar.

 

Primeiramente, é importante checar alguns itens desta lista para que possa acessar seus arquivos COS de um ambiente python de todas as maneiras (não vou necessariamente usar todas aqui nos exemplos):

Você sempre pode retornar a esses links ou dar uma olhada na lista de erros que eu encontrei enquanto estava criando meus primeiros programas de Python com COS, se achar útil.

Então, vamos começar a codar!

 

Primeiro, vamos ter que adaptar algumas coisas do COS para o Python. Por sorte, a InterSystems já deixou isso pronto e só precisamos digitar "import iris" no começo do código para acessar tudo!

 

No próximo passo, vamos criar uma conexão ao namespace desejado, usando um caminho com o host, port e namespace (host:port/namespace) e providenciando o usuário e senha:

Observe como no final criamos um OBJETO IRIS, para utilizarmos essa conexão para ter acesso a tudo o que necessitamos no namespace.

 

Finalmente, pode "codar" tudo o que quiser:

Você pode acessar métodos com o irispy.classMethodValue() providenciando o nome da classe, do método e seus argumentos, manipular objetos com .set() (para propriedades) e muitas outras possibilidades, enquanto trata tudo com Python da forma preferida.

Para mais informações sobre funções providenciadas pelo iris e como usá-las, visite o link Introduction to the Native SDK for Python

 

Nesse exemplo, na linha 16 eu instanciei uma classe persistente para, nas linhas seguintes, dar os valores "Lord of The Rings" e "Tolkien" às propriedades Title e Author.

Na linha 20, chamei um método de outra classe que salva o objeto a uma tabela e retorna um status se funcionou corretamente. Finalmente, imprimo o status na linha 23.

 

Mix!

Em um ambiente de ObjectScript, você pode precisar das Libraries conhecidas do Python, ou então de seus próprios arquivos customizados com funções ou rotinas.

Você pode usar o comando "import" com Numpy, SciPy e qualquer outras que desejar (considerando que as tenha corretamente instaladas: veja aqui como fazer isso)

Há muitas maneiras para acessar seus arquivos locais e é fácil achar tutoriais para isso na internet, considerando que Python é uma linguagem bem popular.

 

Para mim, a mais fácil de trabalhar é a seguinte:

Aqui, importei tudo do arquivo testesql.py, localizado em C:/python e imprimi os resultados da função select()

 

 

Extras - problemas que encontrei

  • SHELLS:  Ao usar os Shells, lembre-se que o Windows PowerShell funciona como um sistema UNIX-based (já que é baseado em .NET) e o Command Prompt é o que vai funcionar corretamente com os exemplos de Windows na documentação oficial da InterSystems. Isso pode soar básico para alguns programadores mais experientes, mas se não estiver prestando atenção nesse detalhe pode perder um bom tempo tentando entender, então achei interessante pontuar isso aqui.
  • USUÁRIOS E PRIVILÉGIOS: O usuário utilizado para programar com ObjectScript de um ambiente Python precisa ter privilégios aos recursos do Namespace. Lembre-se que se você não selecionar nenhum, o padrão é UnkownUser, e se não selecionar namespaces, o padrão é USER. Então, no acesso mais simples, siga: Portal de Administração > Administração do Sistema > Segurança > Usuários > UnknownUser > Roles, selecione %DB_USER e salve.
  • SOCORRO, EU NEM SEI O QUE ESTÁ ACONTECENDO: Para checar mais informações sobre os erros que você está encotrando, siga: Portal de Administração > Explorer do Sistema > SQL e digite "SELECT * FROM %SYS.Audit ORDER BY UTCTimeStamp Desc" para retornar as audits mais recentes. (Lembre-se de checar o namespace para consultar essa query). Aí você irá encontrar as causas de erros como IRIS_ACCESSDENIED() e muito mais, que você pode encontrar até fora do ambiente IRIS. 
  • ERRO AO COMPILAR PYTHON:  Evite dar nomes a métodos como try() ou outras funções prontas do Python. O compilador não entenderá a diferença do nome do Método para a função.

 

Muito obrigada pela leitura e por favor, sinta-se à vontade para compartilhar sugestões, comentários ou dúvidas, ou simplesmente o que você estiver desenvolvendo!

Discussão (0)1
Entre ou crie uma conta para continuar