DEV Community

Cover image for Oracle Autonomous Database + Python3: criando database e conectando
Mateus Souza
Mateus Souza

Posted on

Oracle Autonomous Database + Python3: criando database e conectando

Recentemente comecei a desenvolver um pequeno projeto que precisaria de um pequeno banco de dados, realmente pequeno: os registros seriam dicionários com duas ou três propriedades, algo como:

{
  foo: bar,
  zig: bee,
  created_at: sometime
}
Enter fullscreen mode Exit fullscreen mode

Porém, desta vez não queria subir um banco de dados dentro de um container docker, por questões de economia de recurso: a aplicação por já consumiria as máquinas que o always free tier da Oracle Cloud disponibiliza.

Sendo assim, fui dar uma olhada para os outros recursos fornecidos pela Oracle, e entre eles, achei o Autonomous JSON Database, que entrega 20GB de armazenamento (não é muito, mas é 0800 :D) e acabei escolhendo como parte da stack do projetinho.

Criando o Banco de Dados

A criação é bem simples, no painel do OCI: Menu > Oracle Database > Autonomous JSON Database, em seguida basta clicar no botão de criação.

Painel da Oracle Cloud exibindo uma tabela criada no Autonomous JSON Database

Realizando a conexão via código

A conexão via código deixa a desejar, é necessário fazer instalação de libs via pip, instalação de libs no Sistema Operacional, além de algumas configurações no Banco de Dados.

Permitindo conexões via TLS.

Primeiro é necessário permitir conexões TLS no Banco de dados:

Overview banco da Oracle

Em seguida copie a string de conexão como TLS

String de conexão

Instalando dependências

Instale a biblioteca Python necessária:

pip install oracledb
Enter fullscreen mode Exit fullscreen mode

Instale as bibliotecas no Sistema Operacional seguindo a documentação da Oracle (infelizmente para a maioria das distribuições em Linux a biblioteca não é disponibilizado em um gerenciador de pacotes)

Realize a conexão via código:

import oracledb

from settings import app_settings


class Database:

    def __init__(self) -> None:
        self.connection = oracledb.connect(
            user=app_settings.oci_database_user,
            password=app_settings.oci_database_password,
            dsn=app_settings.oci_database_connection_string,
            encoding=app_settings.oci_encoding
        )

    def get(self):
        cur =  self.connection.cursor()
        cur.execute("select sysdate from dual")
        res = cur.fetchall()
        for row in res:
            print(row)
        cur.close()
Enter fullscreen mode Exit fullscreen mode

A execução desde código deverá ter sucesso:

$ python3 main.py 
(datetime.datetime(2022, 10, 14, 6, 29, 36),)
Enter fullscreen mode Exit fullscreen mode

Referências

python-oracledb.readthedocs.io

blogs oracle

towardsdev

Top comments (0)