🔥 API e Anon key: Dump de Dados e Conversão para SQL em Python! 🐍

🔥 API e Anon key: Dump de Dados e Conversão para SQL em Python! 🐍

Neste vídeo, mergulhamos no mundo do Supabase e mostramos como você pode extrair seus dados e convertê-los em comandos SQL prontos para uso. Perfeito para backups, migrações ou análise de dados!


👨‍💻 O que você vai aprender:

Como fazer um dump completo dos dados do seu projeto Supabase Técnicas para lidar com erros e tabelas inexistentes Como converter os dados JSON do Supabase em comandos SQL inseríveis 🛠️ Ferramentas utilizadas:

Python 3.11
Biblioteca Supabase para Python VSCode (mas você pode usar qualquer editor de sua preferência!)

Código: script-dump-public.py

import os
import json
from supabase import create_client, Client

# Configuração do Supabase
url: str = "https://ID-SUPABASE-SERVER.supabase.co"
key: str =SEU_key"

supabase: Client = create_client(url, key)

def dump_table(table_name):
    try:
        response = supabase.table(table_name).select("*").execute()
        return response.data
    except Exception as e:
        print(f"Erro ao fazer dump da tabela {table_name}: {str(e)}")
        return None

def main():
    tables = ["autores", "categorias", "faq", "noticias", "users" , "coletadados"]
    dump_data = {}

    for table in tables:
        print(f"Fazendo dump da tabela: {table}")
        table_data = dump_table(table)
        if table_data is not None:
            dump_data[table] = table_data
        else:
            print(f"Tabela {table} ignorada devido a erro.")

    # Salva os dados em um arquivo JSON
    with open('supabase_dump.json', 'w') as f:
        json.dump(dump_data, f, indent=2)

    print("Dump completo. Dados salvos em 'supabase_dump.json'")

if __name__ == "__main__":
    main()

🔍 Destaque especial: Apresentamos um script Python robusto que não só extrai seus dados, mas também lida graciosamente com erros comuns, como tabelas inexistentes. Além disso, mostramos como converter o dump JSON em comandos SQL, tornando a migração de dados uma tarefa simples!

Código: multi-table-json-to-supabase-sql.py

import json
import os

def escape_sql_string(value):
    return str(value).replace("'", "''")

def json_to_sql(data):
    sql_commands = []

    for table_name, records in data.items():
        # Verifica se os registros são uma lista
        if not isinstance(records, list):
            records = [records]

        for record in records:
            columns = ', '.join(record.keys())
            values = ', '.join(f"'{escape_sql_string(value)}'" for value in record.values())
            sql = f"INSERT INTO {table_name} ({columns}) VALUES ({values});"
            sql_commands.append(sql)

    return sql_commands

def create_table_commands(data):
    create_commands = []

    for table_name, records in data.items():
        if not records:
            continue
        
        # Usa o primeiro registro para determinar a estrutura da tabela
        first_record = records[0] if isinstance(records, list) else records
        columns = ', '.join(f"{key} TEXT" for key in first_record.keys())
        create_command = f"CREATE TABLE IF NOT EXISTS {table_name} ({columns});"
        create_commands.append(create_command)

    return create_commands

def main():
    # Obtém o diretório do script atual
    script_dir = os.path.dirname(os.path.abspath(__file__))
    json_file = os.path.join(script_dir, 'supabase_dump.json')

    try:
        # Lê o arquivo JSON
        with open(json_file, 'r') as file:
            data = json.load(file)

        # Gera comandos CREATE TABLE
        create_commands = create_table_commands(data)
        
        # Gera comandos INSERT
        insert_commands = json_to_sql(data)

        # Cria um arquivo SQL para salvar os comandos
        sql_file = os.path.join(script_dir, 'supabase_import.sql')
        with open(sql_file, 'w') as file:
            file.write("-- Comandos CREATE TABLE:\n")
            for command in create_commands:
                file.write(command + "\n")
            
            file.write("\n-- Comandos INSERT:\n")
            for command in insert_commands:
                file.write(command + "\n")

        print(f"Comandos SQL gerados e salvos em {sql_file}")

    except FileNotFoundError:
        print(f"Erro: O arquivo {json_file} não foi encontrado.")
    except json.JSONDecodeError:
        print(f"Erro: O arquivo {json_file} não é um JSON válido.")
    except Exception as e:
        print(f"Ocorreu um erro: {str(e)}")

if __name__ == "__main__":
    main()

💡 Dica profissional: Aprenda como personalizar o script para suas necessidades específicas e como automatizar o processo para backups regulares.

🔗 Links úteis:

Documentação oficial do Supabase: https://supabase.io/docs

✓ Crie sua conta no FlutterFlow https://app.flutterflow.io/create-account?referral_id=oJ98Y3lFADZxvKSzZx1IdvxbBKk1

👍 Gostou do vídeo? Não se esqueça de deixar seu like, se inscrever no canal e ativar as notificações para não perder nenhum conteúdo sobre desenvolvimento e banco de dados! #Supabase #Python #SQL #flutterflow #api #codingtutorial

Comments

No comments yet. Why don’t you start the discussion?

    Deixe um comentário

    O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *