Я создаю сервер Flask, который будет отображать информацию, запрашиваемую из базы данных sqlite3.Однако, когда я пытаюсь получить доступ к файлу базы данных после запуска localhost, он возвращает следующую ошибку:
File "C:\Users\Connor\Documents\Parking\app\routes.py", line 13, in index
con = sqlite3.connect(app.config['SQLALCHEMY_DATABASE_URI'])
sqlite3.OperationalError: unable to open database file
127.0.0.1 - - [26/Mar/2019 20:30:57] "GET / HTTP/1.1" 500 -
Я почти уверен, что проблема связана с sqlite:///
, но я не могу понять,это из.Похоже, ни одно из предложенных решений не имеет ответа.
rout.py
from app import app
from flask import Flask, flash, redirect, request, render_template,
session, url_for
import sqlite3
app.secret_key = app.config['SECRET_KEY']
@app.route('/')
@app.route('/index')
def index():
con = sqlite3.connect(app.config['SQLALCHEMY_DATABASE_URI'])
cur = con.cursor()
cur.execute("SELECT * FROM Lot")
data = cur.fetchall()
return render_template('index.html', data=data)
config.py
import os
PROJECT_ROOT = os.path.dirname(os.path.realpath(__file__))
class Config(object):
SQLALCHEMY_DATABASE_URI = "sqlite:///" + os.path.join(PROJECT_ROOT, 'app.db')
SQLALCHEMY_TRACK_MODIFICATIONS = False
DEBUG = True
SECRET_KEY = 'development key'
init .py
from flask import Flask
from config import Config
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
app = Flask(__name__)
app.config.from_object(Config)
db = SQLAlchemy(app)
Печать app.config['SQLALCHEMY_DATABASE_URI']
возвращает sqlite:///C:\Users\Connor\Documents\Parking\app.db
.Я бы предположил, что косые черты являются корнем моей проблемы.Я пробовал несколько вариантов os.path, но безрезультатно.
Как ни странно, когда я вручную набираю свой путь, база данных отображается очень хорошо, и ее данными можно манипулировать на портале администратора.Когда я использую os.path.join(PROJECT_ROOT, 'app.db')
, база данных отображается, но я не могу манипулировать ее данными на портале администратора.Когда я использую "sqlite:///" + os.path.join(PROJECT_ROOT, 'app.db')
, я вообще не могу получить доступ к базе данных.
Мне кажется, я правильно использую sqlite:///
согласно этому документу , так что, возможно, я просточто-то упустил?