详解关于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的Django框架中的Context使用
Jul 15 Python
Python之web模板应用
Dec 26 Python
Python中列表与元组的乘法操作示例
Feb 10 Python
Python Flask前后端Ajax交互的方法示例
Jul 31 Python
在Python中输入一个以空格为间隔的数组方法
Nov 13 Python
使用python判断jpeg图片的完整性实例
Jun 10 Python
python 三元运算符使用解析
Sep 16 Python
python机器学习实现决策树
Nov 11 Python
selenium+python配置chrome浏览器的选项的实现
Mar 18 Python
用python实现一个简单计算器(完整DEMO)
Oct 14 Python
pycharm代码删除恢复的方法
Jun 26 Python
python flappy bird小游戏分步实现流程
Feb 15 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
PHP函数addslashes和mysql_real_escape_string的区别
2014/04/22 PHP
php防止伪造的数据从URL提交方法
2014/06/27 PHP
php批量删除操作(数据访问)
2017/05/23 PHP
php微信开发之关注事件
2018/06/14 PHP
用javascript做拖动布局的思路
2008/05/31 Javascript
IE8 浏览器Cookie的处理
2009/01/31 Javascript
jQuery的deferred对象使用详解
2011/08/20 Javascript
JQuery触发radio或checkbox的change事件
2012/12/18 Javascript
js 为label标签和div标签赋值的方法
2013/08/08 Javascript
Jquery Uploadify多文件上传带进度条且传递自己的参数
2013/08/28 Javascript
jQuery之选项卡的简单实现
2014/02/28 Javascript
JavaScript中String.prototype用法实例
2015/05/20 Javascript
可以浮动某个物体的jquery控件用法实例
2015/07/24 Javascript
详解JavaScript设计模式开发中的桥接模式使用
2016/05/18 Javascript
Bootstrap框架下下拉框select搜索功能
2020/03/26 Javascript
JavaScript比较当前时间是否在指定时间段内的方法
2016/08/02 Javascript
JavaScript自定义分页样式
2017/01/17 Javascript
Javascript 一些需要注意的细节(必看篇)
2017/07/08 Javascript
React Native如何消除启动时白屏的方法
2017/08/08 Javascript
Angular利用内容投射向组件输入ngForOf模板的方法
2018/03/05 Javascript
为vue-router懒加载时下载js的过程中添加loading提示避免无响应问题
2018/04/03 Javascript
[07:48]DOTA2上海特级锦标赛主赛事首日RECAP
2016/03/04 DOTA
[01:28]国服启动器接入蒸汽平台操作流程视频
2021/03/11 DOTA
Python闭包实现计数器的方法
2015/05/05 Python
Python简单删除目录下文件以及文件夹的方法
2015/05/27 Python
Python字符串通过'+'和join函数拼接新字符串的性能测试比较
2019/03/05 Python
set在python里的含义和用法
2019/06/24 Python
python实现简易版学生成绩管理系统
2020/06/22 Python
在 Windows 下搭建高效的 django 开发环境的详细教程
2020/07/27 Python
详解Django中views数据查询使用locals()函数进行优化
2020/08/24 Python
纯CSS3制作的简洁蓝白风格的登录模板(非IE效果更好)
2013/08/11 HTML / CSS
Servlet都有哪些方法?主要作用是什么?
2014/03/04 面试题
大学生职业规划前言模板
2013/12/27 职场文书
服装促销活动方案
2014/02/23 职场文书
儿童诗两首教学反思
2016/02/23 职场文书
vue中this.$http.post()跨域和请求参数丢失的解决
2022/04/08 Vue.js