flask sqlalchemy支持的基于flask的yaml格式纯文本文件模型

flask-filealchem的Python项目详细描述


https://badge.fury.io/py/flask-filealchemy.svghttps://travis-ci.org/siddhantgoel/flask-filealchemy.svg?branch=stable

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

  1. git克隆存储库- git clone https://github.com/siddhantgoel/flask-filealchemy
  2. 安装开发所需的软件包- pipenv install --dev
  3. 基本上就是这样。现在您应该可以运行测试套件了- py.test

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java RFID不完整输出?   java如何构造一个for循环来查找每个数组的第一个索引的总和   java Eclipse AST解析器正在删除我的规则   安卓如何在java中创建“可重写”配置?   java每次我向应用程序添加图像时,它都会崩溃   Java 8流到文件   EntityNotFoundException的java可能原因   java多线程为什么下面的程序表现得如此怪异?   java footprint soap api+mavenjaxb2plugin   java MongoDB锁定,直到找到结果   java重写Jtable选项卡行为转到下一个可编辑单元格   java关于方法和创建另一个方法   java将人脸与图像分离   java复制Spring批处理作业实例   java TextView不会更改为新设置的文本