Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
lmpythw-zh
提交
826a0da8
L
lmpythw-zh
项目概览
OpenDocCN
/
lmpythw-zh
8 个月 前同步成功
通知
0
Star
18
Fork
5
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
lmpythw-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
826a0da8
编写于
8月 15, 2017
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ex45
上级
f252767b
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
2 addition
and
2 deletion
+2
-2
ex45.md
ex45.md
+2
-2
未找到文件。
ex45.md
浏览文件 @
826a0da8
...
...
@@ -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 做的事情。
+
事务是一个高级话题,但如果你可以实现它就试一试。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录