一、ORM介绍
1.什么是ORM
- ORM 全拼Object-Relation Mapping.
- 中文意为 对象-关系映射.
- 在MVC/MVT设计模式中的Model模块中都包括ORM
2.ORM优势
(1)只需要面向对象编程, 不需要面向数据库编写代码.
- 对数据库的操作都转化成对类属性和方法的操作.
- 不用编写各种数据库的sql语句.
(2)实现了数据模型与数据库的解耦, 屏蔽了不同数据库操作上的差异.
- 不在关注用的是mysql、oracle...等.
- 通过简单的配置就可以轻松更换数据库, 而不需要修改代码.
3.ORM劣势
- 相比较直接使用SQL语句操作数据库,有性能损失.
- 根据对象的操作转换成SQL语句,根据查询的结果转化成对象, 在映射过程中有性能损失.
4.ORM和数据库关系:
- 在Django中model是你数据的单一、明确的信息来源。它包含了你存储的数据的重要字段和行为。通常,一个模型(model)映射到一个数据库表.
基本情况:
- 每个模型都是一个Python类,它必须继承models.Model类
django中遵循 Code Frist 的原则,即:先创建类,根据代码中定义的类来自动生成数据库表。
模型的每个属性都代表一个数据库字段。
综上所述,Django为您提供了一个自动生成的数据库访问API。
对象-关系映射
二、创建一个简单的表
1 选择数据库类型
- Django默认自带sqllite的数据库驱动,默认使用sqllite的数据库,可在project文件下的settings.py中修改配置
A)sqllte配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
B)mysql配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'HttpRunner', # 新建数据库名,创建的表都在这下面
'USER': 'root', # 数据库登录名
'PASSWORD': 'Hst888888', # 数据库登录密码
'HOST': '192.168.91.45', # 数据库所在服务器ip地址
'PORT': '3306', # 监听端口 默认3306即可
}
}
C)注意事项
django默认导入的驱动是MySQLdb模块【适用于python2】
python3需要的驱动是pymysql,我们需要在项目名文件下的init_.py(settings.py同级的文件)中添加如下代码:
import pymysql
pymysql.install_as_Mysqldb()
以上代码就是告诉python使用pymysql,不要使用MySQLdb
2 注册应用
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app01',#注册APP,上面都是默认值
]
3 创建类
在app01/models.py 中写下以下代码:
from django.db import models
#在数据库中创建表名为:app01_userinfo
#Django会自动将应用名称添加在表前面
class UserInfo(models.Model):#创建的类必须继承models.Model
#当model中如果没有自增列,则自动会创建一个列名为id的主键
username=models.CharField(max_length=32)
password=models.CharField(max_length=32)
4 生成数据表
完成以上操作,接下来就是根据models中的类在数据库中生成对应的表
命令行窗口切换到项目根目录执行以下操作:
python manage.py makemigrations #在app01/migrations下会生成数据迁移脚本
python manage.py migrate #应用到db生成数据表
到这一步一个简单的数据库就创建完成了