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 附带的会话管理。
添加回答
举报