[PYTHON] OperationalError in SQLAlchemy + SQLite3

Was du machen willst

Umgebung

Python3.8.1 on alpine linux 3.11 on Docker

Was ist passiert

Ich habe den folgenden Code geschrieben und erwartet, dass eine DB-Datei in / var / data erstellt wird

engine = create_engine("sqlite:///var/data/project.sqlite3")
...

Als ich es ausführte, war ich wütend, dass ich die Datenbankdatei nicht öffnen konnte

sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) unable to open database file

Umfrage

/ var / data stellt das Verzeichnis auf der Seite des Host-Betriebssystems in den Container ein, aber die Testdatei, die durch die Operation auf der Seite des Host-Betriebssystems erstellt wurde, sieht auch korrekt aus.

# ls -la /var/data/
total 16
drwxrwxr-x    2 1006     1006          4096 Apr 11 00:41 .
drwxr-xr-x    1 root     root          4096 Apr 11 00:41 ..
-rw-r--r--    1 root     root             0 Apr 11 00:41 testfile

Lösung

Ich bezweifelte, wie ich den Pfad angeben sollte, und überprüfte das offizielle Dokument.

SQLite — SQLAlchemy 1.3 Documentation

This means that the actual filename to be used starts with the characters to the right of the third slash.

relative path

e = create_engine('sqlite:///path/to/database.db')



 Relative Pfade sind Schrägstriche ** 3 **.


> An absolute path, which is denoted by starting with a slash, means you need **four** slashes

> ```python
# absolute path
e = create_engine('sqlite:////path/to/database.db')

Wenn Sie einen absoluten Pfad verwenden möchten, gibt es ** 4 Schrägstriche **.

orz...

Was ich tun wollte, war den ** absoluten Pfad ** zu / var / data / project.sqlite3 anzugeben, also

sqlite:///var/data/project.sqlite3

Stattdessen musste es wie folgt angegeben werden

sqlite:////var/data/project.sqlite3

engine = create_engine("sqlite:////var/data/project.sqlite3")
...

Herzlichen Glückwunsch zum Korrigieren des Codes und er funktioniert jetzt korrekt.

Recommended Posts

OperationalError in SQLAlchemy + SQLite3
SQLite in Python
In Python + SQLite3 "OperationalError: keine solche Spalte:"
Tabellendefinition in SQL Alchemy
Sparen Sie Zeit mit SQLAlchemy
Umgang mit Sitzungen in SQLAlchemy
Verwendung von SQLite in Python
(sqlalchemy) Zeigt Text im Auswahlfeld an
Erste Schritte mit SQLite in einer Programmiersprache
Fremdschlüssel in SQLite von Python [Hinweis]
sqlalchemy
Code für die API-Konvertierung in sqlalchemy erforderlich