老男孩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) 收藏 举报
浙公网安备 33010602011771号