Mateus Souza
Posted on October 14, 2022
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
}
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.
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:
Em seguida copie a string de conexão como TLS
Instalando dependências
Instale a biblioteca Python necessária:
pip install oracledb
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()
A execução desde código deverá ter sucesso:
$ python3 main.py
(datetime.datetime(2022, 10, 14, 6, 29, 36),)
Referências
Posted on October 14, 2022
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.