sqlite3.OperationalError: unable to open database file

348 views
Skip to first unread message

Samuel Carlos Ribeiro

unread,
Feb 27, 2021, 10:10:54 AM2/27/21
to Python Brasil
Boa tarde

No código que segue, aparece o erro conforme titulo

from tkinter import *
import sqlite3

conn = sqlite3.connect ('C:\\Usuario\\Samuel\\Dropbox\\PycharmProjects\\TkinterVendas\\DataBase\\store.db')
c = conn.cursor ( )

result = c.execute ("SELECT MAX(id) from inventory")
for r in result:
id = r[0]


class DataBase:
def _init_(self, master, *args, **kwargs):
self.master = master
self.heading = Label (master, Text="Cadastro de Produtos", font=('arial 40 bold'), fg='steelblue')
self.heading.place (x=400, y=0)

root = Tk ( )

b = DataBase (root)
root.geometry ("1366x768+0+0")
root.title ("Formulário de Cadastro.")
root.mainloop ( )

ACMM

unread,
Feb 27, 2021, 10:44:19 AM2/27/21
to python...@googlegroups.com
Bom, pelo que dá pra entender, baseado no título, talvez o erro esteja no caminho do diretório do arquivo de banco de dados ou o arquivo está corrompido.
A princípio, não vi nenhum erro na sintaxe do código ao acessar o banco de dados.
Se o arquivo de banco de dados estiver no mesmo diretório do arquivo do código, coloca só o nome do arquivo de banco de dados: conn = sqlite3.connect('file.db').
Se o arquivo de banco de dados estiver dentro de uma pasta no mesmo diretório do arquivo do código em Python, coloca assim: conn = sqlite3.connect('pasta/file.db').
Caso estajam em diretórios diferentes, coloca todo o caminho do diretório onde o arquivo de banco de dados está.

Sent from my AC&MM Galaxy A70

--
--
------------------------------------
Grupo Python-Brasil
https://wiki.python.org.br/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/python-brasil/9779d986-51b4-4fb4-9f51-a461413b19eeo%40googlegroups.com.

ACMM

unread,
Feb 27, 2021, 11:03:55 AM2/27/21
to python...@googlegroups.com
Experimenta colocar também isso:
c = conn.cursor ( )

c.execute ("SELECT MAX(id) from inventory")
result = c.fetchone( )
se o resultado do select for um único valor.
Ou coloca assim:
c = conn.cursor ( )

c.execute ("SELECT MAX(id) from inventory")
result = c.fetchall( )
se o resultado do select for mais de um valor.
Não estou afirmando que essa forma como colocaste, esteja errada. Mas eu aprendi dessa forma como coloquei acima e estou dando só uma sugestão.
Reply all
Reply to author
Forward
0 new messages