摘要: 模型 这个术语表示应用使用的持久化实体。在 ORM 中,模型一般是一个 Python 类,类中的属性对应于数据库表中的列。 Flask SQLAlchemy 创建的数据库实例为模型提供了一个基类以及一系列辅助类和辅助函数,可用于定义模型的结构。图 5 1 中的 roles 表和 users 表可像示 阅读全文
posted @ 2019-01-07 17:37 °❆黄雷❄° 阅读(187) 评论(0) 推荐(0) 编辑
摘要: Flask SQLAlchemy 是一个 Flask 扩展,简化了在 Flask 应用中使用 SQLAlchemy 的操作。 SQLAlchemy 是一个强大的关系型数据库框架,支持多种数据库后台。SQLAlchemy 提供了高层 ORM,也提供了使用数据库原生 SQL 的低层功能。 与其他多数扩展 阅读全文
posted @ 2019-01-07 17:11 °❆黄雷❄° 阅读(311) 评论(0) 推荐(0) 编辑
摘要: 大多数数据库引擎都有对应的 Python 包,包括开源包和商业包。Flask 并不限制你使用 何种类型的数据库包,因此你可以根据自己的喜好选择使用 MySQL、Postgres、SQLite、 Redis、MongoDB、CouchDB 或 DynamoDB。 如果这些都无法满足需求,还有一些数据库 阅读全文
posted @ 2019-01-07 16:59 °❆黄雷❄° 阅读(3103) 评论(0) 推荐(0) 编辑
摘要: SQL 数据库擅于用高效且紧凑的形式存储结构化数据。这种数据库需要花费大量精力保证数据的一致性,需要考虑停电或硬件失效。为了达到这种程度的可靠性,关系型数据库采用一种称为 ACID 的范式,即 atomicity(原子性)、consistency(一致性)、isolation(隔离性)和 durab 阅读全文
posted @ 2019-01-07 16:55 °❆黄雷❄° 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 所有不符合上节所述的关系模型的数据库统称为 NoSQL 数据库 。NoSQL 数据库一般使用 集合 代替表,使用 文档 代替记录。NoSQL 数据库采用的设计方式使联结变得困难,所以多数根本不支持这种操作。对于结构如图 5 1 所示的 NoSQL 数据库,若要列出各用户及其角色,需要在应用中执行联结 阅读全文
posted @ 2019-01-07 16:53 °❆黄雷❄° 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 关系型数据库把数据存储在 表 中,表为应用中不同的实体建模。例如,订单管理应用的数据库中可能有 customers、products 和 orders 等表。 表中的 列 数是固定的, 行 数是可变的。列定义表所表示的实体的数据属性。例如,customers 表中可能有 name、address、p 阅读全文
posted @ 2019-01-07 16:39 °❆黄雷❄° 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 请求完成后,有时需要让用户知道状态发生了变化,可以是确认消息、警告或者错误提醒。一个典型例子是,用户提交有一项错误的登录表单后,服务器发回的响应重新渲染登录表单,并在表单上面显示一个消息,提示用户名或密码无效。 Flask 本身内置这个功能。如示例 4 6 所示,flash() 函数可实现这种效果。 阅读全文
posted @ 2019-01-07 16:25 °❆黄雷❄° 阅读(222) 评论(0) 推荐(0) 编辑
摘要: 前一版 hello.py 存在一个可用性问题。用户输入名字后提交表单,然后点击浏览器的刷新按钮,会看到一个莫名其妙的警告,要求在再次提交表单之前进行确认。之所以出现这种情况,是因为刷新页面时浏览器会重新发送之前发送过的请求。如果前一个请求是包含表单数据的 POST 请求,刷新页面后会再次提交表单。多 阅读全文
posted @ 2019-01-07 16:03 °❆黄雷❄° 阅读(268) 评论(0) 推荐(0) 编辑
摘要: 在新版 hello.py 中,视图函数 index() 有两个任务:一是渲染表单,二是接收用户在表单 中填写的数据。 示例 4 4 是更新后的 index() 视图函数。 示例 4 4 hello.py:使用 GET 和 POST 请求方法处理 Web 表单 app.route 装饰器中多出的 me 阅读全文
posted @ 2019-01-07 15:36 °❆黄雷❄° 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 表单字段是可调用的,在模板中调用后会渲染成 HTML。假设视图函数通过 form 参数把 一个 NameForm 实例传入模板,在模板中可以生成一个简单的 HTML 表单,如下所示: 注意,除了 name 和 submit 字段,这个表单还有个 form.hidden_tag() 元素。这个元素生成 阅读全文
posted @ 2019-01-07 15:11 °❆黄雷❄° 阅读(414) 评论(0) 推荐(0) 编辑