《给我一个18岁的姑娘》
我想从老流氓孔建国给我们讲的黄故事中如何能找一个比较机巧又不带器官的。好像围棋布局,开始要疏疏朗朗,微言大义。其实我们最终都是要亮出**的,但是一开始就亮的是露阴犯,大婚之后的是行天地之礼。本章节用到的两个主要的扩展:Flask-SQLAlchemy、Flask-Migrate.
其中,Flask-SQLAlchemy为流行的SQLAlchemy包提供了一个Flask-friendly包装器,它是一个ORM。ORM允许应用程序使用高级实体(如类、对象、方法)而不是表和SQL来管理数据库,它的工作是将高级操作转换为数据库命令。在虚拟环境中安装Flask-SQLAlchemy:pip install flask-sqlalchemy,将会自动附带安装sqlalchemy包。数据库迁移
Flask-Migrate扩展是Alembic(PS:Alembic是SQLAlchemy作者编写的数据库迁移工具)的Flask包装器,是SQLAlchemy的数据库迁移框架。虽然使用数据库迁移为启动数据库添加了一些工作,但这是一个很小的代价,将为未来对数据库进行更改提供强大方法。在虚拟环境中安装Flask-Migrate:pip install flask-migrate,将会自动附带安装Mako、alembic、python-dateutil、python-editor、six。
Flask-SQLAlchemy配置
我们在开发的过程中,使用SQLite数据库,它是开发小型应用程序的方便选择,有时甚至不是那么小,因为每个数据库都存储在磁盘上的单个文件中,并且不需要运行像MySQL、PostgreSQL的数据库服务器。microblog/config.py:Flask-SQLAlchemy配置
在这段代码中我们需要或许数据库的URL,一般从环境变量中读取,但是如果没有定义环境变量,将配置位于主目录中的名为app.db的数据库,该数据库路径存储在basedir变量中。
最后,当我们初始化应用程序的时候,我们也必须初始化SQLAlchemy和Migrate:首先添加一个db表示数据库的实例对象,然后添加一个migrate代表迁移引擎的实例对象。最后,导入一个models的新模块,该模块定义数据结构。
数据库模型
下面以一个用户User的表的结构,剩下的工作就是把它转化为代码写到app/models.py。新建的User类继承Flask-SQLAlchemy基类db.Model。User类定义几个字段为类变量。字段被创建为db.Column类的实例,db.Column类将字段类型作为参数,例如,指定哪些字段是唯一和索引。
随着需求的不断增加,以后数据库会不断的添加修改和删除内容。Alembic将以一种很容易的操作方式来升级或者降级数据库,让我们更便利的修改数据库。一般数据库的命令主要是下列三个命令:1.flask db init:初始化数据库 只有第一次的时候需要执行,以后不需要再执行。
2.flask db migrate -m "user table":这句话并不会对数据库造成任何修改,它只生成迁移脚本,要将修改应用数据库中,必须执行下边这条命令。
3.flask db upgrade:将更改应用到开发数据库中;如果想要撤销上次的修改,只需执行flask db downgrade。数据库中有一对一,一对多,多对多的关系。一对多的关系
插入数据:
一对一需要设置relationship中的uselist=Flase,其他数据库操作一样。
多对多的设置需要创建一个中间表,实例如下所示:
shell上下文
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。