在烧瓶中使用 SqlAlchemy 模型
Posted
技术标签:
【中文标题】在烧瓶中使用 SqlAlchemy 模型【英文标题】:Using SqlAlchemy Models in flask 【发布时间】:2015-12-14 20:19:59 【问题描述】:我最初使用 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 )
......
现在我想在烧瓶中使用相同的模型也用于 REST api。但据我所见,首先我需要使用烧瓶应用程序创建一个数据库实例 - 像这样
app = Flask(__name__)
db = SQLAlchemy(app)
class Movie(db.Model):
.......
如何锻炼?由于我的模型是从 Base 类继承的,但对于烧瓶,它们需要从 db.Model 类继承。
【问题讨论】:
没关系。 db.Model 只是 Base 的代理类。你可以做你所拥有的。 这能回答你的问题吗? Using SQLAlchemy models in and out of Flask 我找到了一个不错的解决方案:***.com/a/64668814/7919597 【参考方案1】:你可以简单地使用你的模型,它们不需要从 db.Model 继承,这只是一个让烧瓶集成更容易的说服力
【讨论】:
【参考方案2】:您可以使用 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)
【讨论】:
以上是关于在烧瓶中使用 SqlAlchemy 模型的主要内容,如果未能解决你的问题,请参考以下文章
在 Flask-SQLAlchemy 模型上使用函数查询会给出 BaseQuery object is not callable 错误