一、ORM
- 概念
全称
Object Relational Mapping
,中文叫做对象关系映射 Django提供了各种数据库的支持,为了大多数数据库提供了统一的接口。可以根据不同的业务请求使用不用的数据库 - 作用
通过
ORM
我们可以通过类的方式去操作数据库,而不用再写原生的SQL语句 - 任务 根据对象的类型生成表结构 将对象、列表的操作,转换为sql语句
- 优点
易用性:使用
ORM
做数据库的开发可以有效的减少重复SQL语句的概率,写出来的模型也更加直观、清晰 性能损耗小:ORM
转换成底层数据库操作指令确实会有一些开销。但从实际的情况来看,这种性能损耗很少(不足5%),只要不是对性能有严苛的要求,综合考虑开发效率、代码的阅读性,带来的好处要远远大于性能损耗,而且项目越大作用越明显 设计灵活:可以轻松的写出复杂的查询 可移植性:封装了底层的数据库实现,支持多个关系数据库引擎,包括流行的MySQL
、PostgreSQL
和SQLite
。可以非常轻松的切换数据库 - 图解
二、配置数据库
注意
默认使用的是sqlite数据库
配置流程
配置sqlite数据库代码为
代码语言:javascript复制DATABASES = {
<span class="hljs-string">'default'</span>: {
<span class="hljs-string">'ENGINE'</span>: <span class="hljs-string">'django.db.backends.sqlite3'</span>, <span class="hljs-comment"># 选择数据库引擎</span>
<span class="hljs-string">'NAME'</span>: os.path.join(BASE_DIR, <span class="hljs-string">'db.sqlite3'</span>), <span class="hljs-comment"># 创建sqlite数据库文件位置</span>
}
}
配置mysql数据库
代码语言:javascript复制DATABASES = {
<span class="hljs-string">'default'</span>: {
<span class="hljs-string">'ENGINE'</span>: <span class="hljs-string">'django.db.backends.mysql'</span>, <span class="hljs-comment"># 选择数据库引擎</span>
<span class="hljs-string">'NAME'</span>: <span class="hljs-string">'lucky'</span>, <span class="hljs-comment">#数据库名称</span>
<span class="hljs-string">'HOST'</span>: <span class="hljs-string">'127.0.0.1'</span>, <span class="hljs-comment">#主机</span>
<span class="hljs-string">'USER'</span>: <span class="hljs-string">'lucky'</span>, <span class="hljs-comment">#用户名</span>
<span class="hljs-string">'PASSWORD'</span>: <span class="hljs-string">'123456'</span>, <span class="hljs-comment">#密码</span>
<span class="hljs-string">'PORT'</span>: <span class="hljs-number">3306</span>, <span class="hljs-comment">#端口</span>
}
}
安装pymysql扩展库
代码语言:javascript复制pip3 install pymysql
在project的init.py文件中 添加如下代码
python3.x使用的是pymysql模块,所以需要在project/__init.py文件中添加如上代码
代码语言:javascript复制<span class="hljs-keyword">import</span> pymysql
pymysql.install_as_MySQLdb()
三、表分析
- 需求 创建用户表
- 用户表所需字段 用户名 密码 性别 年龄 个人简介 头像 是否删除
- 创建模型代码位置 App->models.py
- 模型、属性、表之间的关联 一个模型类对应数据库中的一张表,一个类属性对应表中的一个字段