Django数据库操作是十分重要的内容,这两天简单学习了数据库的操作,这里做个总结。

  1.ORM简介

  简单的来说,ORM就是对象-关系-映射。它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库。

  2.创建模型前的准备

  在settings中配置databases

  DATABASES = {

  'default': {

  'ENGINE': 'django.db.backends.mysql',

  'NAME':'myorm_test', #需要连接的数据库名称

  'USER':'xxx', #连接数据库的用户名

  'PASSWORD':'xxx', #用户名对应的密码

  'HOST':'127.0.0.1', #连接主机,这里是本机

  'PORT':3306 #端口,默认是3306

  }

  }

  pymysql包的导入

  在setting中导入包pymysql

  在项目名文件下的__init__.py文件中写入:

  import pymysql

  pymysql.install_as_MySQLdb()

  3.创建模型

  在models.py中新建类

  from django.db import models

  # Create your models here.

  # 图书列表

  class Book(models.Model):

  id = models.AutoField(primary_key=True)

  name = models.CharField(max_length=50)

  price = models.DecimalField(max_digits=7,decimal_places=2)

  # max_digits:总位数(不包括小数点和符号),decimal_places:小数位数

  publishs = models.ManyToManyField(to="publish")

  authors = models.ManyToManyField(to="author")

  # 出版社列表

  class Publish(models.Model):

  id = models.AutoField(primary_key=True)

  name = models.CharField(max_length=50)

  addr = models.CharField(max_length=100)

  # 作者列表无锡看妇科的医院 http://www.ytsgfk120.com/

  class Author(models.Model):

  id = models.AutoField(primary_key=True)

  name = models.CharField(max_length=30)

  country = models.CharField(max_length=20)

  4.在terminal中执行数据迁移命令

  python manage.py makemigrations

  python manage.py migrate

  !!!遇到的问题

  执行python manage.py makemigrations命令时,报错:

  File "E:\PycharmProjects\MyORM_Test\venv\lib\site-packages\django\db\backends\mysql\base.py", line 36, in

  raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__)

  django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.

  解决:

  在"E:\PycharmProjects\MyORM_Test\venv\lib\site-packages\django\db\backends\mysql\base.py", line 36位置注释掉下列代码:

  # if version < (1, 3, 13):

  # raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__)

  再次执行python manage.py makemigrations继续报错:

  File "E:\PycharmProjects\MyORM_Test\venv\lib\site-packages\django\db\backends\mysql\operations.py", line 146, in last_executed_query

  query = query.decode(errors='replace')

  AttributeError: 'str' object has no attribute 'decode'

  解决:

  在"E:\PycharmProjects\MyORM_Test\venv\lib\site-packages\django\db\backends\mysql\operations.py", line 146位置修改代码如下:

  query = getattr(cursor, '_executed', None)

  if query is not None:

  # query = query.decode(errors='replace') # 原始代码

  query = query.encode(errors='replace') # 修改后

  return query

  问题解决。

Django模型层(models.py)之模型创建的更多相关文章

  1. django之 使用views.py里面的函数对表进行增删改查 内容(models.py中表的创建、views.py中函数的使用,基于对象的跨表查询)

    models之对于表的创建有以下几种: 一对一:ForeignKey("Author",unique=True),  OneToOneField("Author" ...

  2. (16)模型层Models - ORM的使用

    需求:通过orm创建user表 先配置settings文件夹 连接数据库和配置数据库 Django的模块有两种 1.mysqlDB  django内置的模块,只能在python2.X版本下用 2.py ...

  3. Django模型层ORM学习笔记

    一. 铺垫 1. 连接Django自带数据库sqlite3 之前提到过Django自带一个叫做sqlite3的小型数据库,当我们做本地测试时,可以直接在sqlite3上测试.不过该数据库是小型的,在有 ...

  4. Django多对多表的三种创建方式,MTV与MVC概念

    MTV与MVC MTV模型(django): M:模型层(models.py) T:templates V:views MVC模型: M:模型层(models.py) V:视图层(views.py) ...

  5. Python Django框架笔记(二):创建应用和django 管理

    #前提是已经创建项目 (一)      创建应用 使用命令,在项目中创建一个应用(blog自定义) python manage.py startapp blog 创建完成后,可以看到下面几个文件 文件 ...

  6. Django创建模型_模型层

    1.在项目Mysite下创建应用bms 2.在bms下的models.py文件中创建模型 from django.db import models # Create your models here. ...

  7. Django模型层

    ORM简介: MVC或者MTV框架中包括一个重要的部分就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员的工 ...

  8. django模型层 关于单表的增删改查

    关于ORM MTV或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库, 通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员 ...

  9. Django模型层—ORM

    目录 一.模型层(models) 1-1. 常用的字段类型 1-2. 字段参数 1-3. 自定义char字段 1-4. 外键关系 二.Django中测试脚本的使用 三.单表操作 3-1. 添加记录 3 ...

  10. Django 模型层之单表操作

    一.单表操作之创建表 在app的models.py文件中创建模型: from django.db import models class Book(models.Model): id = models ...

随机推荐

  1. CentOS7 最小安装 vmware 创建虚拟机 nmcli ip systemctl

    镜像网站 一些开源软件的国内镜像源 站点版 (一).企业站 1.搜狐:http://mirrors.sohu.com/ 2.网易:http://mirrors.163.com/ 3.阿里云:http: ...

  2. Python基础之内置方法

    目录 字符串的内置方法 按索引取值 切片(顾头不顾尾,步长) 长度len 成员运算 移除两边空白strip 切分split 循环 lower&upper startswith & en ...

  3. three.js 添加 图形控制界面 gui

    需要导入这个js: import { GUI } from '/three.js/jsm/libs/dat.gui.module.js'; 局部代码: var params = { color: 0x ...

  4. OD(lfdnb)

    由于一场意外,D死了,在此开一个新坑 2019.11.13 考前焦虑 智商为负 有点担心考试状态 2019.11.12 上午考试简直心态爆炸 T1看了一个小时不会 然后看T2,这时候wxy聚聚已经切了 ...

  5. 【数位DP】【P4317】花神的数论题

    [数位DP][P4317]花神的数论题 Description 给定 \(n\),求 \(n\) 以内所有正整数二进制下 \(1\) 的个数的乘积,答案对 \(10^7 + 7\) 取模 Limita ...

  6. 【Activiti学习之一】Activiti入门

    环境 JDK1.7 MySQL5.6 Tomcat7 Eclipse-Luna activiti 6.0 一.概念1.工作流(Workflow):是一系列相互衔接.自动进行的业务活动或任务.采用工作流 ...

  7. rent a apartment

    今日焦点 month-to-month 按月 6-month minimum 至少六个月 sublease 转租 drenched in sunlight 阳光充足的 词汇实践 I am lookin ...

  8. mac os 配置

    /Users/xxx/odoo-13.0/odoo-bin -c /Users/xxx/odoo-13.0/debian/odoo.conf

  9. SpringBoot 应用篇之从 0 到 1 实现一个自定义 Bean 注册器

    191213-SpringBoot 应用篇之从 0 到 1 实现一个自定义 Bean 注册器 我们知道在 spring 中可以通过@Component,@Service, @Repository 装饰 ...

  10. Metasploaitable和侦察httrack-安全牛课堂网络安全之Web渗透测试练习记录

    环境配置 首先在网上下载kali的镜像以及Metasploaitable虚拟机,打开按照网上教程安装好kali虚拟机,另一边打开Metasploaitable虚拟机,进入输入初始账户msfadmin, ...