详解关于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 相关文章推荐
web.py在模板中输出美元符号的方法
Aug 26 Python
寻找网站后台地址的python脚本
Sep 01 Python
python统计文本字符串里单词出现频率的方法
May 26 Python
python 生成图形验证码的方法示例
Nov 11 Python
通过PHP与Python代码对比的语法差异详解
Jul 10 Python
python删除列表元素的三种方法(remove,pop,del)
Jul 22 Python
python写程序统计词频的方法
Jul 29 Python
Python字典中的值为列表或字典的构造实例
Dec 16 Python
python多线程使用方法实例详解
Dec 30 Python
简单了解python shutil模块原理及使用方法
Apr 28 Python
详解python爬取弹幕与数据分析
Nov 14 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+mysql保存和输出文件
2006/10/09 PHP
php三维数组去重(示例代码)
2013/11/26 PHP
Drupal7中常用的数据库操作实例
2014/03/02 PHP
PHP模拟QQ登录的方法
2015/07/29 PHP
PHP下使用mysqli的函数连接mysql出现warning: mysqli::real_connect(): (hy000/1040): ...
2016/02/14 PHP
如何在Laravel5.8中正确地应用Repository设计模式
2019/11/26 PHP
JavaScript DOM 学习第三章 内容表格
2010/02/19 Javascript
Jquery $.getJSON 在IE下的缓存问题解决方法
2014/10/10 Javascript
Javascript优化技巧之短路表达式详细介绍
2015/03/27 Javascript
jQuery实现的进度条效果
2015/07/15 Javascript
理解javascript中的原型和原型链
2015/07/30 Javascript
jQuery实现仿美橙互联两级导航菜单效果完整实例
2015/09/17 Javascript
JS简单实现String转Date的方法
2016/03/02 Javascript
jQuery遍历DOM元素与节点方法详解
2016/04/14 Javascript
React Native 自定义下拉刷新上拉加载的列表的示例
2018/03/01 Javascript
JavaScript实现获取两个排序数组的中位数算法示例
2019/02/26 Javascript
vue-cli的build的文件夹下没有dev-server.js文件配置mock数据的方法
2019/04/17 Javascript
详解微信小程序实现跑马灯效果(附完整代码)
2019/04/29 Javascript
微信小程序停止其他视频播放当前视频的实例代码
2019/12/25 Javascript
如何在postman中添加cookie信息步骤解析
2020/06/30 Javascript
js用正则表达式筛选年月日的实例方法
2021/01/04 Javascript
python过滤字符串中不属于指定集合中字符的类实例
2015/06/30 Python
Python验证码识别处理实例
2015/12/28 Python
Python多线程爬虫实战_爬取糗事百科段子的实例
2017/12/15 Python
解决python os.mkdir创建目录失败的问题
2018/10/16 Python
pandas 条件搜索返回列表的方法
2018/10/30 Python
pytorch打印网络结构的实例
2019/08/19 Python
学习Django知识点分享
2019/09/11 Python
django 实现后台从富文本提取纯文本
2020/07/02 Python
说一下Linux下有关用户和组管理的命令
2016/01/04 面试题
中国梦演讲稿开场白
2014/08/28 职场文书
学风建设演讲稿
2014/09/12 职场文书
2014年副班长工作总结
2014/12/10 职场文书
导游词之峨眉山
2019/12/16 职场文书
Python之基础函数案例详解
2021/08/30 Python
Tomcat安装使用及部署Web项目的3种方法汇总
2022/08/14 Servers