flask sqlalchemy支持的基于flask的yaml格式纯文本文件模型
flask-filealchem的Python项目详细描述
Flask-FileAlchemy
允许您使用yaml格式的纯文本文件作为
为您的Flask应用程序存储数据。
安装
$ pip install flask-filealchemy
背景
虽然有比纯文本更好的数据存储可用于生产,但是 对于只需在本地运行的应用程序,对数据存储的限制是 更加放松。对于这样的应用程序,通常可以牺牲 易于使用的性能。
这里一个非常强大的用例是生成静态站点。当你可以使用 Frozen-Flask要将整个烧瓶应用程序“冻结”到一组HTML文件, 你的应用程序仍然需要从某个地方读取数据。这意味着你需要 设置一个数据存储,它(本地)倾向于基于文件的sqlite。当 这项工作做得非常好,这也意味着执行sql语句 输入数据。
根据您有多少个数据模型以及它们包含的类型,这个
很快就会失控(想象一下必须编写一个INSERT
语句
一篇博文)。
此外,您不能对数据进行版本控制。好吧,严格来说你可以, 但对于人类来说,差异是没有意义的。
flask filealchemy允许您使用另一种数据存储-纯文本文件。
纯文本文件的优点是更容易为人类处理。 另外,您可以对它们进行版本控制,这样您的应用程序数据和代码都是 一起登记并共享历史。
flask filealchemy允许您在yaml格式的纯文本文件中输入数据 并根据使用定义的SQLAlchemy模型加载它们 Flask-SQLAlchemy然后将这些数据放入您正在使用的任何数据存储中 (内存中的sqlite工作得最好)然后就可以让你的应用程序查询它了 好吧。
这样,您就可以在不影响 静态站点的简单性。
用法
使用标准(flask-)sqlalchemy api定义数据模型。
app=Flask(__name__)# configure Flask-SQLAlchemyapp.config['SQLALCHEMY_DATABASE_URI']='sqlite:///:memory:'db=SQLAlchemy(app)classBlogPost(db.Model):__tablename__='blog_posts'slug=Column(String(255),primary_key=True)title=Column(String(255),nullable=False)contents=Column(Text,nullable=False)
然后,在磁盘上的某个地方创建一个data/
目录(以保存
很简单,建议将此目录放在应用程序根目录中)。为了
定义的每个模型都在这个data/
目录下创建一个目录
与__tablename__
属性同名。
在本例中,我们将向
data/blog_posts/first-post-ever.yml
。
slug:first-post-evertitle:First post ever!contents:|This blog post talks about how it's the first post ever!
对于不超过2-3个字段的“较小”模型,使用烧瓶filealchemy
支持读取_all.yml
文件。在这种情况下,而不是
为每一行添加一个文件,只需在_all.yml
中添加所有行
表目录中的文件。
在本例中,可能如下所示。
-slug:first-post-evertitle:First post ever!contents:This blog post talks about how it's the first post ever!-slug:second-post-evertitle:second post ever!contents:This blog post talks about how it's the second post ever!
最后,使用您的设置配置Flask-FileAlchemy
,并要求它加载
所有的数据。
# configure Flask-FileAlchemyapp.config['FILEALCHEMY_DATA_DIR']=os.path.join(os.path.dirname(os.path.realpath(__file__)),'data')app.config['FILEALCHEMY_MODELS']=(BlogPost,)# load tablesFileAlchemy(app,db).load_tables()
Flask-FileAlchemy
然后从给定的目录中读取数据,然后
将它们存储在配置的数据存储中
Flask-FileAlchemy
与(首选项是
sqlite:///:memory:
)。
请注意,不能使用
db.session
。好吧,技术上是允许的,但是你的应用程序改变了
make将只反映在内存中的数据存储中,但不会持久化
到磁盘。
贡献
最欢迎投稿!
请确保安装了python 3.4+和pipenv。
- git克隆存储库-
git clone https://github.com/siddhantgoel/flask-filealchemy
。 - 安装开发所需的软件包-
pipenv install --dev
- 基本上就是这样。现在您应该可以运行测试套件了-
py.test
。