2
respostas

Adicionar conteudo no sqlite armazenado "no drive G" incrementalmente

https://cursos.alura.com.br/course/pandas-io/task/49076

Estou trabalhando com o conteúdo da aula acima (que, infelizmente, não tem fórum para discussão de dúvidas - por isso, estou postando aqui).

Na aula, o professor trabalha com a possibilidade de exportação de um df para um banco sqlite.

Considerando que uma das vantagens do banco SQLite é que ele é um "arquivo que vai se expandindo" conforme os dados são adicionados nele, e considerando também o fato de que eu posso manter esse arquivo de banco no meu "drive G" do Google, gostaria de saber como posso fazer para que, ao exportar o dataframe para ele, as novas tabelas constantes no sqlite persistam no meu "drive g", de tal forma que, quando eu reuniciar o colab eu não perca o que foi adicionado na seção anterior. Além disso, eu não consegui localizar no "drive G" o dito arquivo sqlite. Onde ele se encontra por padrão, já que o professor usou o comando

engine = create_engine('sqlite:///:memory:')
engine

Ele fica na RAM? Grato.

2 respostas

Oi Rogério, tudo bem?

Acredito que por criar a engine sqlite com definição da memória utilizando :memory: ele escolhe a RAM. Ainda não vi o conteúdo do curso, mas geralmente utilizo a biblioteca built-in do Python chamada sqlite3, com ela você pode utilizar o sqlite3.connect() e passar um caminho de um arquivo existente em disco que seja compatível com o SQLite. Uma vez que você realizar uma operação de inserção de dados nesse banco pode realizar o commit da operação com o comando .commit() na sua variável que guarda a engine/conexão.

Para saber mais como funciona a conexão através da biblioteca sqlite3: https://docs.python.org/pt-br/3/library/sqlite3.html?highlight=connection#sqlite3.Connection

Espero ter te ajudado.

Obrigado, mas eu consegui (vou postar aqui pois pode ser a dúvida de mais alguem). Primeiro vamos instalar e importar o que é necessário para trabalhar com o sqlite.

!pip install sqlalchemy
import sqlite3
from sqlalchemy import create_engine

Aqui vem o pulo do gato. A definição de uma "engine" para permitir a criação do arquivo sqlite *.db no googledrive.

engine = create_engine('sqlite:////content/drive/Shareddrives/C/S/dados/dadosf.db')
engine

Para manipular o banco (criar tabela, usar comandos DDL, DML etc) usamos o que se conhece na "camada de programaçao" como "cursor".

conn = sqlite3.connect('/content/drive/Shareddrives/C/S/dados/dadosf.db')
c = conn.cursor()

Pronto! É śo isso!!! Por meio do cursor, vc pode fazer um insert, select etc...por exemplo, supondo que uma tabela "aluno" foi criada no banco da engine, vc pode fazer um insert e select da seguinte forma:

c.execute("INSERT INTO aluno VALUES ('Mark Z','M,'20')")

c.execute('SELECT * FROM aluno').fetchall()