Flask入门教程数据库工具 (ORM,即对象关系映射)。借助 SQLAlchemy,你可以通过定义 Python 类来表 示数据库里的一张表(类属性表示表中的字段 / 列),通过对这个类进行各种操作 来代替写 SQL 语句。这个类我们称之为模型类,类中的属性我们将称之为字段。 Flask 有大量的第三方扩展,这些扩展可以简化和第三方库的集成工作。我们下面 将使用一个叫做 Flask-SQLAlchemy 的官方扩展来集成 git push 提示 你可以在 GitHub 上查看本书示例程序的对应 commit:4d2442a。 进阶提示 在生产环境,你可以更换更合适的 DBMS,因为 SQLAlchemy 支持多种 SQL 数据库引擎,通常只需要改动非常少的代码。 我们的程序只有一个用户,所以没有将 User 表和 Movie 表建立关联。访问 Flask-SQLAlchemy 文档的”声明模型“章节可以看到相关内容。 query.first() return dict(user=user) # 需要返回字典,等同于return {'user': u ser} 这个函数返回的变量(以字典键值对的形式)将会统一注入到每一个模板的上下文 环境中,因此可以直接在模板中使用。 现在我们可以删除 404 错误处理函数和主页视图函数中的 user 变量定义,并删 除在 render_template() 函数里传入的关键字参数:0 码力 | 127 页 | 7.62 MB | 1 年前3
01. 邓良驹 编写更安全的Python代码 "__main__": payload = "!!python/object/apply:__main__.ShellExp ['/bin/sh']" yaml.load(payload) 小心 服务端模板注入(SSTI) from flask import Flask from flask request, render_template_string app = Flask(__name__) @app person=person) if __name__ == "__main__": app.run(debug=True 应对: 不要使用%s,而应在模板中直接使用{{var}}。 小心 注入攻击 query = “SELECT * FROM accounts WHERE uid = ‘” + request.args.get(“uid”) + ”’” resuts = mysql.execute(query) '1'='1 SELECT * FROM accounts WHERE uid = '' or '1'='1' 应对: 对外部输入进行完善的检查、过滤、转义操作后,再进行执行。 参考资料:“驹说码事”《注入的原理与防御措施》 https://mp.weixin.qq.com/s/Zd81qlcWJi4H1AD9WzPX7w 小心 PyPI 依赖包 不要以为 Star 多的包就不存在漏洞; 更不要以为0 码力 | 18 页 | 988.40 KB | 1 年前3
Python 标准库参考指南 3.11.10 操作类似于 Unix 中的 uniq。当每次 key 函数产生的键值改变时,迭代器会分组或生 成一个新组(这就是为什么通常需要使用同一个键值函数先对数据进行排序)。这种行为与 SQL 的 GROUP BY 操作不同,SQL 的操作会忽略输入的顺序将相同键值的元素分在同组中。 返回的组本身也是一个迭代器,它与groupby() 共享底层的可迭代对象。因为源是共享的, 当groupby() 对象向后 不需要独立的服务器进程,也允许需要使用一种非标准的 SQL 查询语言来访问它。一些应用程序可以 使用 SQLite 作为内部数据存储。可以用它来创建一个应用程序原型,然后再迁移到更大的数据库,比如 PostgreSQL 或 Oracle。 sqlite3 模块由 Gerhard Häring 编写。它提供了 PEP 249 所描述的符合 DB-API 2.0 规范的 SQL 接口, 并要求使用 SQLite 3 control)的更深一步的背景。 参见: https://www.sqlite.org SQLite 的主页;它的文档详细描述了它所支持的 SQL 方言的语法和可用的数据类型。 https://www.w3schools.com/sql/ 学习 SQL 语法的教程、参考和例子。 PEP 249 - DB-API 2.0 规范 PEP 由 Marc-André Lemburg 撰写。 120 码力 | 2248 页 | 11.10 MB | 9 月前3
Python 标准库参考指南 3.11.10 操作类似于 Unix 中的 uniq。当每次 key 函数产生的键值改变时,迭代器会分组或生成一 个新组(这就是为什么通常需要使用同一个键值函数先对数据进行排序)。这种行为与 SQL 的 GROUP BY 操作不同,SQL 的操作会忽略输入的顺序将相同键值的元素分在同组中。 返回的组本身也是一个迭代器,它与groupby() 共享底层的可迭代对象。因为源是共享的, 当groupby() 对象向后 要独立的服务器进程,也允许需要使用一种非标准的 SQL 查询语言来访问它。一些应用程序可以使用 SQLite 作为内部数据存储。可以用它来创建一个应用程序原型,然后再迁移到更大的数据库,比如 PostgreSQL 或 Oracle。 sqlite3 模块由 Gerhard Häring 编写。它提供了 PEP 249 所描述的符合 DB-API 2.0 规范的 SQL 接口,并要 求使用 SQLite 3 control)的更深一步的背景。 参见: https://www.sqlite.org SQLite 的主页;它的文档详细描述了它所支持的 SQL 方言的语法和可用的数据类型。 https://www.w3schools.com/sql/ 学习 SQL 语法的教程、参考和例子。 PEP 249 - DB-API 2.0 规范 PEP 由 Marc-André Lemburg 撰写。 120 码力 | 2399 页 | 11.19 MB | 9 月前3
Python 标准库参考指南 3.10.15 操作类似于 Unix 中的 uniq。当每次 key 函数产生的键值改变时,迭代器会分组或生 成一个新组(这就是为什么通常需要使用同一个键值函数先对数据进行排序)。这种行为与 SQL 的 GROUP BY 操作不同,SQL 的操作会忽略输入的顺序将相同键值的元素分在同组中。 返回的组本身也是一个迭代器,它与groupby() 共享底层的可迭代对象。因为源是共享的, 当groupby() 对象向后 不需要独立的服务器进程,也允许需要使用一种非标准的 SQL 查询语言来访问它。一些应用程序可以 使用 SQLite 作为内部数据存储。可以用它来创建一个应用程序原型,然后再迁移到更大的数据库,比如 PostgreSQL 或 Oracle。 sqlite3 模块由 Gerhard Häring 编写。它提供了 PEP 249 所描述的符合 DB-API 2.0 规范的 SQL 接口, 并要求使用 SQLite 3 control)的更深一步的背景。 参见: https://www.sqlite.org SQLite 的主页;它的文档详细描述了它所支持的 SQL 方言的语法和可用的数据类 型。 https://www.w3schools.com/sql/ 学习 SQL 语法的教程、参考和例子。 PEP 249 - DB-API 2.0 规范 PEP 由 Marc-André Lemburg 撰写。 120 码力 | 2072 页 | 10.39 MB | 9 月前3
Python 标准库参考指南 3.10.15 操作类似于 Unix 中的 uniq。当每次 key 函数产生的键值改变时,迭代器会分组或生成一 个新组(这就是为什么通常需要使用同一个键值函数先对数据进行排序)。这种行为与 SQL 的 GROUP BY 操作不同,SQL 的操作会忽略输入的顺序将相同键值的元素分在同组中。 返回的组本身也是一个迭代器,它与groupby() 共享底层的可迭代对象。因为源是共享的, 当groupby() 对象向后 要独立的服务器进程,也允许需要使用一种非标准的 SQL 查询语言来访问它。一些应用程序可以使用 SQLite 作为内部数据存储。可以用它来创建一个应用程序原型,然后再迁移到更大的数据库,比如 PostgreSQL 或 Oracle。 sqlite3 模块由 Gerhard Häring 编写。它提供了 PEP 249 所描述的符合 DB-API 2.0 规范的 SQL 接口,并要 求使用 SQLite 3 control)的更深一步的背景。 参见: https://www.sqlite.org SQLite 的主页;它的文档详细描述了它所支持的 SQL 方言的语法和可用的数据类型。 https://www.w3schools.com/sql/ 学习 SQL 语法的教程、参考和例子。 PEP 249 - DB-API 2.0 规范 PEP 由 Marc-André Lemburg 撰写。 120 码力 | 2207 页 | 10.45 MB | 9 月前3
Python 标准库参考指南 3.12 操作类似于 Unix 中的 uniq。当每次 key 函数产生的键值改变时,迭代器会分组或生成 一个新组(这就是为什么通常需要使用同一个键值函数先对数据进行排序)。这种行为与 SQL 的 GROUP BY 操作不同,SQL 的操作会忽略输入的顺序将相同键值的元素分在同组中。 返回的组本身也是一个迭代器,它与groupby() 共享底层的可迭代对象。因为源是共享的, 当groupby() 对象向后 不需要独立的服务器进程,也允许需要使用一种非标准的 SQL 查询语言来访问它。一些应用程序可以 使用 SQLite 作为内部数据存储。可以用它来创建一个应用程序原型,然后再迁移到更大的数据库,比如 PostgreSQL 或 Oracle。 The sqlite3 module was written by Gerhard Häring. It provides an SQL interface compliant control)的更深一步的背景。 � 参见 https://www.sqlite.org SQLite 的主页;它的文档详细描述了它所支持的 SQL 方言的语法和可用的数据类型。 https://www.w3schools.com/sql/ 学习 SQL 语法的教程、参考和例子。 PEP 249 - DB-API 2.0 规范 PEP 由 Marc-André Lemburg 撰写。 120 码力 | 2253 页 | 11.81 MB | 9 月前3
Python 标准库参考指南 3.12 操作类似于 Unix 中的 uniq。当每次 key 函数产生的键值改变时,迭代器会分组或生成 一个新组(这就是为什么通常需要使用同一个键值函数先对数据进行排序)。这种行为与 SQL 的 GROUP BY 操作不同,SQL 的操作会忽略输入的顺序将相同键值的元素分在同组中。 返回的组本身也是一个迭代器,它与groupby() 共享底层的可迭代对象。因为源是共享的, 当groupby() 对象向后 不需要独立的服务器进程,也允许需要使用一种非标准的 SQL 查询语言来访问它。一些应用程序可以 使用 SQLite 作为内部数据存储。可以用它来创建一个应用程序原型,然后再迁移到更大的数据库,比如 PostgreSQL 或 Oracle。 The sqlite3 module was written by Gerhard Häring. It provides an SQL interface compliant control)的更深一步的背景。 � 参见 https://www.sqlite.org SQLite 的主页;它的文档详细描述了它所支持的 SQL 方言的语法和可用的数据类型。 https://www.w3schools.com/sql/ 学习 SQL 语法的教程、参考和例子。 PEP 249 - DB-API 2.0 规范 PEP 由 Marc-André Lemburg 撰写。 120 码力 | 2253 页 | 11.81 MB | 9 月前3
Python 标准库参考指南 3.13 操作类似于 Unix 中的 uniq。当每次 key 函数产生的键值改变时,迭代器会分组或生成 一个新组(这就是为什么通常需要使用同一个键值函数先对数据进行排序)。这种行为与 SQL 的 GROUP BY 操作不同,SQL 的操作会忽略输入的顺序将相同键值的元素分在同组中。 返回的组本身也是一个迭代器,它与groupby() 共享底层的可迭代对象。因为源是共享的, 当groupby() 对象向后 不需要独立的服务器进程,也允许需要使用一种非标准的 SQL 查询语言来访问它。一些应用程序可以 使用 SQLite 作为内部数据存储。可以用它来创建一个应用程序原型,然后再迁移到更大的数据库,比如 PostgreSQL 或 Oracle。 sqlite3 模块由 Gerhard Häring 编写。它提供了 PEP 249 所描述的符合 DB-API 2.0 规范的 SQL 接口,并 要求使用 SQLite 3 control)的更深一步的背景。 � 参见 https://www.sqlite.org SQLite 的主页;它的文档详细描述了它所支持的 SQL 方言的语法和可用的数据类型。 https://www.w3schools.com/sql/ 学习 SQL 语法的教程、参考和例子。 PEP 249 - DB-API 2.0 规范 PEP 由 Marc-André Lemburg 撰写。 120 码力 | 2246 页 | 11.74 MB | 9 月前3
Python 标准库参考指南 3.13 操作类似于 Unix 中的 uniq。当每次 key 函数产生的键值改变时,迭代器会分组或生成 一个新组(这就是为什么通常需要使用同一个键值函数先对数据进行排序)。这种行为与 SQL 的 GROUP BY 操作不同,SQL 的操作会忽略输入的顺序将相同键值的元素分在同组中。 返回的组本身也是一个迭代器,它与groupby() 共享底层的可迭代对象。因为源是共享的, 当groupby() 对象向后 不需要独立的服务器进程,也允许需要使用一种非标准的 SQL 查询语言来访问它。一些应用程序可以 使用 SQLite 作为内部数据存储。可以用它来创建一个应用程序原型,然后再迁移到更大的数据库,比如 PostgreSQL 或 Oracle。 sqlite3 模块由 Gerhard Häring 编写。它提供了 PEP 249 所描述的符合 DB-API 2.0 规范的 SQL 接口,并 要求使用 SQLite 3 control)的更深一步的背景。 � 参见 https://www.sqlite.org SQLite 的主页;它的文档详细描述了它所支持的 SQL 方言的语法和可用的数据类型。 https://www.w3schools.com/sql/ 学习 SQL 语法的教程、参考和例子。 PEP 249 - DB-API 2.0 规范 PEP 由 Marc-André Lemburg 撰写。 120 码力 | 2242 页 | 11.73 MB | 9 月前3
共 277 条
- 1
- 2
- 3
- 4
- 5
- 6
- 28













