详解关于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 list中append()与extend()用法分享
Mar 24 Python
python实现百度关键词排名查询
Mar 30 Python
Python实现定时任务
Feb 08 Python
Python复制Word内容并使用格式设字体与大小实例代码
Jan 22 Python
Python设计模式之策略模式实例详解
Jan 21 Python
微信小程序python用户认证的实现
Jul 29 Python
使用python批量修改文件名的方法(视频合并时)
Mar 24 Python
Python 复平面绘图实例
Nov 21 Python
ansible动态Inventory主机清单配置遇到的坑
Jan 19 Python
在django中使用post方法时,需要增加csrftoken的例子
Mar 13 Python
Python 实现二叉查找树的示例代码
Dec 21 Python
PyQt5 显示超清高分辨率图片的方法
Apr 11 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下对数组进行排序的函数
2010/08/08 PHP
PHP中将网页导出为Word文档的代码
2012/05/25 PHP
PHP环境搭建(php+Apache+mysql)
2016/11/14 PHP
在PHP中实现使用Guzzle执行POST和GET请求
2019/10/15 PHP
php的无刷新操作实现方法分析
2020/02/28 PHP
js常见表单应用技巧
2008/01/09 Javascript
js对象的比较
2011/02/26 Javascript
js自动闭合html标签(自动补全html标记)
2012/10/04 Javascript
js中数组(Array)的排序(sort)注意事项说明
2014/01/24 Javascript
使用AngularJS来实现HTML页面嵌套的方法
2015/06/17 Javascript
js去字符串前后空格的实现方法
2016/02/26 Javascript
JQuery查找子元素find()和遍历集合each的方法总结
2017/03/07 Javascript
NodeJS 实现手机短信验证模块阿里大于功能
2017/06/19 NodeJs
vue-cli2.x项目优化之引入本地静态库文件的方法
2018/06/19 Javascript
探索JavaScript中私有成员的相关知识
2019/06/13 Javascript
javascript实现的时间格式加8小时功能示例
2019/06/13 Javascript
jquery实现下载图片功能
2019/07/18 jQuery
js微信分享接口调用详解
2019/07/23 Javascript
NestJs使用Mongoose对MongoDB操作的方法
2021/02/22 Javascript
Python类定义和类继承详解
2015/05/08 Python
python删除列表内容
2015/08/04 Python
JavaScript中的模拟事件和自定义事件实例分析
2018/07/27 Python
Python多进程池 multiprocessing Pool用法示例
2018/09/07 Python
详解python之heapq模块及排序操作
2019/04/04 Python
扩展Django admin的list_filter()可使用范围方法
2019/08/21 Python
Python操作Mongodb数据库的方法小结
2019/09/10 Python
完美解决TensorFlow和Keras大数据量内存溢出的问题
2020/07/03 Python
python爬虫中抓取指数的实例讲解
2020/12/01 Python
STP的判定过程
2012/10/01 面试题
汇源肾宝广告词
2014/03/20 职场文书
安全目标管理责任书
2014/07/25 职场文书
好的促销活动方案
2014/08/21 职场文书
营销计划书
2015/01/17 职场文书
自愿离婚协议书范本
2015/01/26 职场文书
2015年统计员个人工作总结
2015/07/23 职场文书
Python中Numpy和Matplotlib的基本使用指南
2021/11/02 Python