[RISOLTO Python3] connessione sqlite fallita

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
MarcoK
Prode Principiante
Messaggi: 135
Iscrizione: martedì 28 febbraio 2006, 7:55

[RISOLTO Python3] connessione sqlite fallita

Messaggio da MarcoK »

Ciao a tutti.

Ho scritto un'applicazione in python3 che si interfaccia con una tabella sqlite.
Eseguita da terminale l'applicazione, che utilizza tkinter come modulo grafico, funziona perfettamente se accedo alla directory in cui è presente il file .pyw e dove è presente il file .db

Se invece provo ad eseguire il programma indicando in modo assoluto la directory:

Codice: Seleziona tutto

python3 /media/Backup/Python/Gomme-cas/Cas_gomme.pyw
ottengo il seguente errore

Codice: Seleziona tutto

File "/media/Backup/Python/Gomme-cas/Cas_gomme.pyw", line 263, in __init__
    self.conn=sqlite3.connect('./cas.db')
sqlite3.OperationalError: unable to open database file
sapete aiutarmi a risolvere?


p.s. Ho provato anche con la voce

Codice: Seleziona tutto

...sqlite3.connect('cas.db')
senza il ./ ma non cambia nulla.
Ultima modifica di MarcoK il venerdì 11 aprile 2014, 7:46, modificato 1 volta in totale.
Nexol
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1169
Iscrizione: venerdì 13 novembre 2009, 10:15

Re: [Python3] connessione sqlite fallita

Messaggio da Nexol »

Vedi se fa al caso tuo.
Ubuntu 20.04 --> Notebook Dell 1747 - Intel Core i7-720QM - 8GB Ram - Scheda grafica AMD Mobility Radeon HD 4650 1GB Ram con driver radeon
Avatar utente
tomm
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 796
Iscrizione: lunedì 15 ottobre 2007, 10:16
Desktop: Gnome
Distribuzione: Ubuntu 16.04

Re: [Python3] connessione sqlite fallita

Messaggio da tomm »

il problema è che non trova il database perché usi un percorso relativo alla posizione dello script. Per risolvere devi determinare il percorso assoluto della cartella dove si trova il file Cas_gomme.pyw.
Prova sostituendo questo

Codice: Seleziona tutto

self.conn=sqlite3.connect('./cas.db')
con questo:

Codice: Seleziona tutto

import os
database =  os.path.dirname(os.path.abspath(__file__)) + '/cas.db'
self.conn=sqlite3.connect(database)
MarcoK
Prode Principiante
Messaggi: 135
Iscrizione: martedì 28 febbraio 2006, 7:55

Re: [Python3] connessione sqlite fallita

Messaggio da MarcoK »

Tomm funziona, Grazie.

Era proprio un problema di indirizzi relativi ed assoluti.

Domanda. In tutti gli esempi che ho visto in rete, non si è mai accennato al fatto di dover utilizzare un indirizzo geneato dinamicamente.
Solo per una questione di esempi o il mio è un caso particolare?
Avatar utente
tomm
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 796
Iscrizione: lunedì 15 ottobre 2007, 10:16
Desktop: Gnome
Distribuzione: Ubuntu 16.04

Re: [RISOLTO Python3] connessione sqlite fallita

Messaggio da tomm »

Generare i percorsi dinamicamente è una pratica molto comune nella programmazione, soprattutto se vuoi che il tuo programma funzioni indipendentemente da come è stato installato e da dove viene lanciato
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: Google [Bot] e 2 ospiti