详解关于Django中ORM数据库迁移的配置


Posted in Python onOctober 08, 2018

简介

ORM:

关系对象映射。定义一个类自动生成数据库的表结构。

创建数据库的时候,一般有以下几种常用数据类型:数字、字符串以及时间。

ORM分为两种:

  • DB First 数据库里先创建数据库表结构,根据表结构生成类,根据类操作数据库
  • Code First 先写代码,执行代码创建数据库表结构

主流的orm都是code first。django 的orm也是code first,所以学的时候,本质就分为两块:

  • 根据类自动创建数据库表
  • 根据类对数据库表中的数据进行各种操作

手动创建mysql数据库,例如db_Django03

create database root charset=utf8;

1,若想将模型转为mysql数据库中的表,需要在settings中配置:

DATABASES = {
  'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME':'bms',      # 要连接的数据库,连接前需要创建好
    'USER':'root',


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


 # 连接数据库的密码
    'HOST':'127.0.0.1',    # 连接主机,默认本级
    'PORT':3306  
    # 端口 默认3306
  }
}

2,需要激活我们的mysql。然后,启动项目,会报错:no module named MySQLdb 。这是因为django默认你导入的驱动是MySQLdb,可是MySQLdb 对于py3有很大问题,所以我们需要的驱动是PyMySQL 所以,我们只需要找到项目名文件下的init,在里面写入:

import pymysql
pymysql.install_as_MySQLdb()

*注意1,需确保配置文件中的INSTALLED_APPS中写入我们创建的app名称

INSTALLED_APPS = [
  'django.contrib.admin',
  'django.contrib.auth',
  'django.contrib.contenttypes',
  'django.contrib.sessions',
  'django.contrib.messages',
  'django.contrib.staticfiles',
  "book"
]

*注意2,如果报错如下:

django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.3 or newer is required; you have 0.7.11.None

MySQLclient目前只支持到python3.4,因此如果使用的更高版本的python,需要修改如下:

通过查找路径C:\Programs\Python\Python36-32\Lib\site-packages\Django-2.0-py3.6.egg\django\db\backends\mysql 这个路径里的文件把

if version < (1, 3, 3):
   raise ImproperlyConfigured("mysqlclient 1.3.3 or newer is required; you have %s" % Database.__version__)

注释掉 就OK了。

*注意3,如果想打印orm转换过程中的sql,需要在settings中进行如下配置:

LOGGING = {
  'version': 1,
  'disable_existing_loggers': False,
  'handlers': {
    'console':{
      'level':'DEBUG',
      'class':'logging.StreamHandler',
    },
  },
  'loggers': {
    'django.db.backends': {
      'handlers': ['console'],
      'propagate': True,
      'level':'DEBUG',
    },
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python open()文件处理使用介绍
Nov 30 Python
Python实现打印螺旋矩阵功能的方法
Nov 21 Python
特征脸(Eigenface)理论基础之PCA主成分分析法
Mar 13 Python
python实现简单名片管理系统
Nov 30 Python
python实现贪吃蛇小游戏
Mar 21 Python
python从子线程中获得返回值的方法
Jan 30 Python
基于python历史天气采集的分析
Feb 14 Python
django的ORM操作 删除和编辑实现详解
Jul 24 Python
pytorch 数据处理:定义自己的数据集合实例
Dec 31 Python
Python基于gevent实现高并发代码实例
May 15 Python
Python 创建守护进程的示例
Sep 29 Python
python自然语言处理之字典树知识总结
Apr 25 Python
面向初学者的Python编辑器Mu
Oct 08 #Python
Django 实现购物车功能的示例代码
Oct 08 #Python
一行代码让 Python 的运行速度提高100倍
Oct 08 #Python
Python django使用多进程连接mysql错误的解决方法
Oct 08 #Python
Python Pandas批量读取csv文件到dataframe的方法
Oct 08 #Python
Python中的函数式编程:不可变的数据结构
Oct 08 #Python
详解多线程Django程序耗尽数据库连接的问题
Oct 08 #Python
You might like
linux系统上支持php的 iconv()函数的方法
2011/10/01 PHP
用PHP实现浏览器点击下载TXT文档的方法详解
2013/06/02 PHP
使用php实现快钱支付功能(涉及到接口)
2013/07/01 PHP
总结PHP代码规范、流程规范、git规范
2018/06/18 PHP
Javascript自定义排序 node运行 实例
2013/06/05 Javascript
javascript 判断字符串是否包含某字符串及indexOf使用示例
2013/10/18 Javascript
给文字加上着重号的JS代码
2013/11/12 Javascript
jQuery对val和atrr(&quot;value&quot;)赋值的区别介绍
2014/09/26 Javascript
JS版元素周期表实现方法
2015/08/05 Javascript
全面解析Bootstrap图片轮播效果
2015/12/03 Javascript
js HTML5上传示例代码完整版
2016/10/10 Javascript
详解AngularJS中$filter过滤器使用(自定义过滤器)
2017/02/04 Javascript
vue自定义指令directive实例详解
2018/01/17 Javascript
详解vue2.0 不同屏幕适配及px与rem转换问题
2018/02/23 Javascript
解决vue 单文件组件中样式加载问题
2019/04/24 Javascript
[48:53]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第一场
2014/05/26 DOTA
Python中关于使用模块的基础知识
2015/05/24 Python
Python查找两个有序列表中位数的方法【基于归并算法】
2018/04/20 Python
Python2和Python3的共存和切换使用
2019/04/12 Python
pandas分区间,算频率的实例
2019/07/04 Python
numpy.transpose()实现数组的转置例子
2019/12/02 Python
python GUI库图形界面开发之PyQt5布局控件QHBoxLayout详细使用方法与实例
2020/03/06 Python
python求前n个阶乘的和实例
2020/04/02 Python
CSS3中颜色线性渐变实战
2015/07/18 HTML / CSS
html5实现微信打飞机游戏
2014/03/27 HTML / CSS
John Hardy官方网站:手工设计首饰的奢侈品牌
2017/07/05 全球购物
美国婴儿和儿童服装购物网站:PatPat
2020/10/01 全球购物
接口可以包含哪些成员
2012/09/30 面试题
成教自我鉴定
2013/10/27 职场文书
村委会贫困证明
2014/01/14 职场文书
家长学校实施方案
2014/03/15 职场文书
《金色的脚印》教后反思
2014/04/23 职场文书
交通事故委托书范本精选
2014/10/04 职场文书
庆元旦主持词
2015/07/06 职场文书
财务人员入职担保书
2015/09/22 职场文书
Python中使用Opencv开发停车位计数器功能
2022/04/04 Python