在Flask中使用SqlAlchemy模型

3

我使用SqlAlchemy创建了一些模型,用于最初设置数据库。最初,我解析一些XML文件并填充数据库。这是一个必须在服务器上安装应用程序时完成的一次性操作。

Base = declarative_base()

class Movie(Base):
        __tablename__ = 'Movies'
        id = Column(Integer, primary_key=True, autoincrement=True)
        title = Column(String(80))
        filename = Column(String(80), unique=True)
        genre = Column(String(80))
        language = Column(String(80))
        year = Column(Integer)
        description = Column(Text)
        poster = Column(String)

        def __init__(self, title, filename, genre, language, year, description, poster):
            self.title = title
            self.filename = filename
            self.genre = genre
            self.language = language
            self.year = year
            self.description = description
            self.poster = poster

        def __repr__(self):
            return '<Movie (id=%d, title=%s, filename=%s, genre=%s, year=%s, description=%s, poster=%s)>' % (
                self.id, self.title, self.filename, self.genre, self.year, self.description, self.poster )
......

现在我想在flask中使用相同的模型来创建REST api。但是从我所看到的,首先需要使用flask应用程序创建一个数据库实例 - 就像这样

app = Flask(__name__)
db = SQLAlchemy(app)
class Movie(db.Model):
.......

这是怎么工作的?因为我的模型继承自Base类,但是对于flask,它们需要继承自db.Model类。


2
不重要。db.Model只是Base的代理类。你可以完全照常操作。 - nathancahill
这个回答解决了你的问题吗?在Flask中使用SQLAlchemy模型 - Joe
我找到了一个不错的解决方案:https://dev59.com/Nr3pa4cB1Zd3GeqPjK4O#64668814 - Joe
2个回答

2

您可以直接使用您的模型,它们不必从db.Model继承,这只是为了方便Flask集成。

"Original Answer"的翻译是"最初的回答"。


0

您可以使用 SQLAlchemy 实例来创建一个模块,并只在其他模块中继承它。

在 database.py 模块中:

from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()

movieModel.py

from database import db

class MovieModel(db.Model):
    __tablename__ = 'movie'

    id = db.Column(db.Integer, primary_key=True)

imageModel.py

from database import db

class ImageModel(db.Model):
    __tablename__ = 'image'

    id = db.Column(db.Integer, primary_key=True)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接