1 回答

TA貢獻1796條經驗 獲得超7個贊
這里的問題是您使用的是 sqlalchemy 連接 url,但嘗試直接通過 sqlite3 api 進行連接。
這行代碼來自您的index()
路線:
con = sqlite3.connect(app.config['SQLALCHEMY_DATABASE_URI'])
...調用該sqllite3.connect()
函數,并且您正在傳遞您的 sqlalchemy 連接 url: SQLALCHEMY_DATABASE_URI = "sqlite:///" + os.path.join(PROJECT_ROOT, 'app.db')
。
這是 的函數簽名sqlite3.connect()
:
sqlite3.connect(database[, timeout, detect_types, isolation_level, check_same_thread, factory, cached_statements, uri])
這是關于可以作為database
參數傳遞的內容的文檔摘錄:
database 是一個類似路徑的對象,給出要打開的數據庫文件的路徑名(絕對或相對于當前工作目錄)。
sqllite:///some/path/to/app.db
不是有效的路徑名,這就是引發錯誤的原因。
您已經解決了配置的所有麻煩flask_sqlalchemy
,所以您不妨使用它!
from app import app, db # <== notice import of db here
from flask import (Flask, flash, redirect, request, render_template,
session, url_for)
app.secret_key = app.config['SECRET_KEY']
@app.route('/')
@app.route('/index')
def index():
data = db.session.execute("SELECT * FROM Lot").fetchall()
return render_template('index.html', data=data)
這有一個額外的好處,包括 Flask-SQLAlchemy 附帶的會話管理。
添加回答
舉報