老男孩python全栈就业班第9期第3部分Django基础第61天ORM介绍及Django使用ORM创建表

ORM介绍及Django使用ORM创建表

import pymysql
pymysql.connect(
    ...
    ...
)

1. 不同的程序员写的SQL水平参差不齐

2. 执行效率也参差不齐

python语法 --自动翻译--> SQL语句

jQuery                         DOM

$("#d1") --自动翻译--> document.getElementById("d1")

 

ORM:

    优点:

        1. 简单,不用自己写SQL语句

        2. 开发效率高

    缺点:

        1. 记忆你这个特殊的语法

        2. 相对于大神些的SQL语句,肯定执行效率有差距

 

ORM的对应关系:

  类 ---> 数据表

  对象 ---> 数据行

  属性 ---> 字段

 

ORM能做的事儿:

  1. 操作数据表 --> 创建表/删除表/修改表

    操作models.py里面的类

  2. 操作数据行 --> 数据的增删改查

  不能创建数据库,自己动手创建数据库

 

使用Django的ORM详细步骤

  1. 自己动手创建数据库

create database 数据库名;

  2. 在Django项目中设置连接数据库的相关配置(告诉Django连接哪一个数据库)

# 数据库相关的配置
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',  # 连接的数据库类型
        'HOST': '127.0.0.1',  # 连接数据库的地址
        'PORT': 3306,  # 端口
        'NAME': "day61",  # 数据库名称
        'USER': 'root',  # 用户
        'PASSWORD': '123456'  # 密码
    }
}            

  3. 告诉Django用pymysql代替默认的MySQLDB 连接MySQL数据库

    在项目/__init__.py文件中,写下面两句:

import pymysql
# 告诉Django用pymysql来代替默认的MySQLdb
pymysql.install_as_MySQLdb()

  4. 在app下面的models.py文件中定义一个类,这个类必须继承models.Model

class 类名(models.Model):

  5. 执行两个命令

python manage.py makemigrations
python manage.py migrate

  

实例

1.新建数据库 day61

2.进入目录 mysiteday61/mysiteday61,修改文件 settings.py

# 数据库相关的配置
DATABASES = {
    'default': {
        # 连接的数据库类型
        'ENGINE': 'django.db.backends.mysql',
        # 连接数据库类地址
        'HOST': '127.0.0.1',
        # 端口
        'PORT': 3306,
        # 数据库名称
        'NAME': 'day61',
        # 用户
        'USER': 'root',
        # 密码
        'PASSWORD': '123456'
    }
}

3.进入目录 mysiteday61/mysiteday61,修改文件 __init__.py

import pymysql
# 告诉 Django 用 pymysql 来代替默认的MySQLdb
pymysql.install_as_MySQLdb()

4.进入目录 mysiteday61/app01,修改文件 models.py

from django.db import models

# Create your models here.
# ORM相关的只能写在这个文件里,写到别的文件里 Django 找不到

class UserInfo(models.Model):
    id = models.AutoField(primary_key=True) # 创建一个自增的主键字段
    name = models.CharField(null=False, max_length=20) # 创建一个varchar类型的不能为空

5.在 DOS 窗口或者在pycharm的 Terminal 下运行命令

python manage.py makemigrations
python manage.py migrate

注意:这里有一个问题,搭建 Django2.2 + Python3.5 + pymysql 时同步数据库时报错

当运行 python manage.py makemigrations

网上找到的解决方式有两个

第一种方式:

Django 版本降到 1.x,不用 2.x,能解决

第二种方式:

产生错误原因:Django2.2 和 pymysql 版本不匹配。mysqldb 又不支持 python3。

解决方法

1)找到 Python 安装路径下的 "Python目录\Lib\site-packages\django\db\backends\mysql\base.py文件"

      注释掉以下代码

2)找到 Python 安装目录下的 "Python目录\Lib\site-packages\django\db\backends\mysql\operations.py"

      修改以下代码,把 decode 改成 encode

问题可以解决,但是要改 Django 中的代码,这个问题需要慎重选择

posted on 2019-11-05 05:23  herisson_pan  阅读(9)  评论(0)    收藏  举报

导航