mirror of
https://github.com/apachecn/lmpythw-zh.git
synced 2025-06-05 08:51:25 +00:00
ex45
This commit is contained in:
parent
f252767b54
commit
826a0da894
4
ex45.md
4
ex45.md
@ -18,8 +18,8 @@
|
||||
|
||||
你在 ORM 中应实现的一些主要功能有:
|
||||
|
||||
+ 从外部传递字符串到 ORM 应该是安全的。如果你使用 F 字符串来制作你的 SQL,那么你就错了。原因是,如果你执行`f"SELECT * FROM {table_name}`,那么有人可以从外部将`table_name`设置为SQL,例如`person; DROP TABLE person`。你的数据库很可能以这种方式运行,销毁所有内容或更糟。有些数据库甚至允许你在 SQL 中运行系统命令,这被称为“SQL 注入”,你不应该在 ORM 中引入它。
|
||||
+ 所有的 CRUD 操作,但在Python。我建议你跳过`CREATE TABLE`部分,直到你让其他的一切正常工作。简单的`INSERT`,`SELECT`,`UPDATE`和`DELETE`是易于制作的,但是从类定义创建数据库纲要涉及到一些主流的 Python 黑魔法,使其真正有效。使用手工制作的`.sql`文件创建你的数据库,然后一旦让其他东西正常工作,你可以尝试纲要系统来替换`.sql`文件。
|
||||
+ 从外部传递字符串到 ORM 应该是安全的。如果你使用 F 字符串来制作你的 SQL,那么你就错了。原因是,如果你执行`f"SELECT * FROM {table_name}`,那么有人可以从外部将`table_name`设置为 SQL,例如`person; DROP TABLE person`。你的数据库很可能以这种方式运行,销毁所有内容或更糟。有些数据库甚至允许你在 SQL 中运行系统命令,这被称为“SQL 注入”,你不应该在 ORM 中引入它。
|
||||
+ 所有的 CRUD 操作,但在 Python 中实现。我建议你跳过`CREATE TABLE`部分,直到你让其他的一切正常工作。简单的`INSERT`,`SELECT`,`UPDATE`和`DELETE`是易于制作的,但是从类定义创建数据库纲要涉及到一些主流的 Python 黑魔法,使其真正有效。使用手工制作的`.sql`文件创建你的数据库,然后一旦让其他东西正常工作,你可以尝试纲要系统来替换`.sql`文件。
|
||||
+ 将 Python 类型匹配到 SQL 类型以及新类型,来处理 SQL 类型。你可能会发现,你必须做一些杂技,将 Python 数据类型放到 SQL 表中。也许这太痛苦了,所以你最终会自己制作数据类型。这就是 Django 做的事情。
|
||||
+ 事务是一个高级话题,但如果你可以实现它就试一试。
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user