Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
4
respostas

Por algum motivo exec(open('db.py').read()) está com erro.

Eu acho que fiz bem o desafio, mas não consigo checar se deu certo por causa desse erro.

import sqlite3

def plugin():
    conn = sqlite3.connect('TechMais.db')
    return conn

def create_table_products():
    conn = plugin()
    cursor = conn.cursor()
    cursor.execute(
        """
            CREATE TABLE IF NOT EXISTS products(
            id INTEGER PRIMARY KEY,
            name TEXT,
            price INTEGER,
            )
        """
    )
    conn.commit()
    conn.close()


def create_product(name, price):
    conn = plugin()
    cursor = conn.cursor()
    cursor.execute(
        """
            INSERT INTO products(name, price) \
            VALUES (?, ?)
        """, (name, price)
    )
    conn.commit()
    conn.close()

def list_products():
    conn = plugin()
    cursor = conn.cursor()
    cursor.execute(
        """
            SELECT * FROM products
        """
    )
    products = cursor.fetchall()
    for product in products:
        print(product)
    conn.commit()
    conn.close()

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

4 respostas

Olá, Hassan, como vai?

Analisando o código e a imagem enviada, há dois pontos diferentes acontecendo. O primeiro é que o terminal mostra FileNotFoundError: [Errno 2] No such file or directory: 'db.py', indicando que o arquivo db.py não foi encontrado no diretório atual. Antes de executar exec(open('db.py').read()), confirme se esse arquivo realmente existe na mesma pasta em que o interpretador Python está sendo executado.

Além disso, no código da criação da tabela existe um detalhe na instrução SQL. Após price INTEGER há uma vírgula antes do fechamento do parêntese, o que torna o comando CREATE TABLE inválido. O trecho deve terminar com price INTEGER seguido diretamente pelo ).

Por exemplo:

CREATE TABLE IF NOT EXISTS products(
    id INTEGER PRIMARY KEY,
    name TEXT,
    price INTEGER
)

Depois disso, basta chamar create_table_products() para criar a tabela antes de inserir ou listar produtos.

Você poderia compartilhar como está organizada a pasta do seu projeto e informar em qual arquivo está executando o comando exec(open('db.py').read())? Assim conseguimos verificar se o caminho do arquivo também está correto.

Conte com o fórum caso surjam novas dúvidas. Estamos à disposição.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado

Estou tentando criar o database, no arquivo só tem o .py deste projeto.

Obrigado por corrigir um erro que eu nem tinha visto!Insira aqui a descrição dessa imagem para ajudar na acessibilidade

solução!

Oi, Hassan.

Nesse caso, a origem do erro ficou mais clara. O comando exec(open('db.py').read()) procura especificamente um arquivo chamado db.py. Como o seu arquivo se chama testTechMais.py, você pode alterar o comando para exec(open('testTechMais.py').read()) ou, se preferir seguir o mesmo exemplo do curso, renomear o arquivo para db.py

Solucionou!