详解关于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常用列表数据结构小结
Aug 06 Python
wxPython事件驱动实例详解
Sep 28 Python
Python探索之实现一个简单的HTTP服务器
Oct 28 Python
详解Python下ftp上传文件linux服务器
Jun 21 Python
python3读取excel文件只提取某些行某些列的值方法
Jul 10 Python
python看某个模块的版本方法
Oct 16 Python
Python3使用Matplotlib 绘制精美的数学函数图形
Apr 11 Python
利用python如何在前程无忧高效投递简历
May 07 Python
简单了解Django ContentType内置组件
Jul 23 Python
详解python中eval函数的作用
Oct 22 Python
Python数据可视化:泊松分布详解
Dec 07 Python
解决tensorflow添加ptb库的问题
Feb 10 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获取文件绝对路径的代码(上一级目录)
2011/05/29 PHP
php简单的会话类代码
2011/08/08 PHP
php读取文件内容的三种可行方法示例介绍
2014/02/08 PHP
yii框架builder、update、delete使用方法
2014/04/30 PHP
详解PHP的Yii框架中扩展的安装与使用
2016/04/01 PHP
php加密之discuz内容经典加密方式实例详解
2017/02/04 PHP
Thinkphp3.2简单解决多文件上传只上传一张的问题
2017/09/26 PHP
JS 自定义带默认值的函数
2011/07/21 Javascript
js中判断文本框是否为空的两种方法
2011/07/31 Javascript
实例讲解jQuery中对事件的命名空间的运用
2016/05/24 Javascript
使用jQuery实现一个类似GridView的编辑,更新,取消和删除的功能
2017/03/15 Javascript
vue子组件使用自定义事件向父组件传递数据
2017/05/27 Javascript
微信小程序开发之toast提示插件使用示例
2017/06/08 Javascript
EL表达式截取字符串的函数说明
2017/09/22 Javascript
微信小程序倒计时功能实现代码
2017/11/09 Javascript
原生js通过一行代码实现简易轮播图
2019/06/05 Javascript
vue实现后台管理权限系统及顶栏三级菜单显示功能
2019/06/19 Javascript
vue相关配置文件详解及多环境配置详细步骤
2020/05/19 Javascript
[14:25]教你分分钟做大人:主宰(HEROS)
2014/12/08 DOTA
编写Python爬虫抓取暴走漫画上gif图片的实例分享
2016/04/20 Python
不管你的Python报什么错,用这个模块就能正常运行
2018/09/14 Python
python 定时器,实现每天凌晨3点执行的方法
2019/02/20 Python
pycharm编写spark程序,导入pyspark包的3中实现方法
2019/08/02 Python
使用Django和Postgres进行全文搜索的实例代码
2020/02/13 Python
Python编程快速上手——选择性拷贝操作案例分析
2020/02/28 Python
python查看矩阵的行列号以及维数方式
2020/05/22 Python
Python-opencv实现红绿两色识别操作
2020/06/04 Python
Keras 实现加载预训练模型并冻结网络的层
2020/06/15 Python
HTML5到底会有什么发展?HTML5的前景展望
2015/07/07 HTML / CSS
英国和世界各地预订便宜的酒店:LateRooms.com
2019/05/05 全球购物
党支部党的群众路线对照检查材料
2014/09/24 职场文书
2014年大学团支部工作总结
2014/12/02 职场文书
7个你应该知道的JS原生错误类型
2021/04/29 Javascript
解决Pytorch修改预训练模型时遇到key不匹配的情况
2021/06/05 Python
OpenStack虚拟机快照和增量备份实现方法
2022/04/04 Servers
微信小程序 根据不同用户切换不同TabBar
2022/04/21 Javascript