尝试使用 SQLAlchemy 和 Flask 访问表列表时返回空字典(在 Github Codespaces 中)

问题描述 投票:0回答:1

我试图用一个简单的 Flask 应用程序来反映已经在我的应用程序外部生成的 sqlite 数据库,但无法使其与我猜的数据库有效连接..

主要问题是我无法访问其中的任何表。

我正在 Github Codespaces 中工作,并且已经尝试过使用 os.path 等设置数据库路径的解决方法。

这就是我的代码的开始方式:

from flask_sqlalchemy import SQLAlchemy
from sqlalchemy.ext.automap import automap_base
from sqlalchemy import create_engine, MetaData
import os.path

db_name = 'evaluaciones.sqlite'
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
db_path = os.path.join(BASE_DIR, db_name)

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + db_name
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)

然后,当我试图获取数据并使其工作时,我继续这样做

with app.app_context():

    print(db_name)
    metadata_obj = MetaData(schema="main")
    metadata_obj.reflect(db.engine)
    print(metadata_obj.tables)
    print(metadata_obj.tables.keys())

终端的输出只有这三行:

evaluaciones.sqlite
FacadeDict({})
dict_keys([])

如果通过终端,我使用sqlite3访问数据库,这就是我看到的:

Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .open evaluaciones.sqlite
sqlite> .tables
formulas         ingredientes     materias_primas

为什么我看不到与当前 Python 代码的输出相同的列表?

python sqlite flask sqlalchemy flask-sqlalchemy
1个回答
0
投票

嗯,不太确定如何通过这些“元数据”对象来做到这一点,但是创建从 db.Model 继承的类使其工作。

本教程在这里很好地解释了它并帮助我解决了这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.