我正在创建一个 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:///,但我无法弄清楚。建议的解决方案似乎也没有答案。
routes.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:///按照本文档正确使用,所以也许我只是遗漏了什么?
芜湖不芜
相关分类