使用Flask-SQLAlchemy加载现有SQLite数据库遇错误,求解决方案
使用Flask-SQLAlchemy连接现有SQLite数据库的问题与解决
问题场景
我尝试创建一个Python Web应用以连接现有SQLite数据库,编写了如下代码:
from flask import Flask from flask_sqlalchemy import SQLAlchemy from sqlalchemy.ext.declarative import declarative_base app = Flask(__name__) app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///history.db" db = SQLAlchemy(app) app.app_context().push() db.reflect() History = db.Table( "history", db.Model.metadata, autoload=True, autoload_with=db.engine ) print(db.Table("history", db.Model.metadata).columns.items())
首次运行错误
运行代码时出现如下错误:
TypeError: Additional arguments should be named <dialectname>_<argument>, got 'autoload'
我能找到SQLAlchemy加载现有数据库schema的文档,但找不到Flask-SQLAlchemy相关的资料,请问如何使用Flask-SQLAlchemy将SQLite数据库加载到Flask应用中?
解决过程
修正参数错误
修改代码移除autoload=True参数,更新后的代码如下:
History = db.Table( "history", db.Model.metadata, autoload_with=db.engine )
解决表不存在错误
修改后出现新错误:
sqlalchemy.exc.NoSuchTableError: history
将数据库连接URL修改为绝对路径(Windows系统下注意转义反斜杠):
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///C:\\Projects\\HistoryDatabase\\history.db"
修改后成功获取了表结构!
注:测试环境为Windows 10系统、Python 3.8.10版本
内容的提问来源于stack exchange,提问作者Karthik Sankaran
相关产品推荐
相关产品推荐

