sqlite Flask_SQLAlchemy无法读取在SQLAlchemy中创建的表的结构

jljoyd4f  于 2023-11-21  发布在  SQLite
关注(0)|答案(1)|浏览(242)

我使用SQLAlchemy创建了一个表:

engine = create_engine('sqlite:///sd.sqlite')

images = Table(
   'images', meta,
   Column('id', Integer, primary_key = True),
   Column('url', String),
   ...
)

meta.create_all(engine)

字符串
这是可行的,我有一个数据库,可以用数据填充它。我想创建一个Flask应用程序来使用Flask_SQLAlchemy访问这些数据,但无法让它工作:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////sd.sqlite'
db = SQLAlchemy(app)
Base = db.declarative_base()

class Images(db.Model):
    with app.app_context(): #needed to fix application context error
        __table__ = db.Table('images', Base.metadata),

""" with app.app_context():
    db.Model.metadata.reflect(db.engine) """

@app.route("/")
def hello_world():
    images = Images.query.all()
    return images

app.run(port=8131)


这会导致以下错误:
Mapper Mapper[Images(images)]无法为Map表“images”组装任何主键列
但是我指定了一个主键。我做错了什么?

mzmfm0qo

mzmfm0qo1#

所以,我的代码有两个问题:
1.我需要指定数据库文件的绝对路径。
1.我必须使用以下语法来获取表模式:

Images = db.Table(
         "images", 
         db.Model.metadata,
         autoload_with=db.engine
    )

字符串
1.我必须使用db.reflect()而不是declarative_base

相关问题