详解关于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中的__SLOTS__属性使用示例
Feb 18 Python
python3调用R的示例代码
Feb 23 Python
点球小游戏python脚本
May 22 Python
python xlsxwriter创建excel图表的方法
Jun 11 Python
在PyCharm中三步完成PyPy解释器的配置的方法
Oct 29 Python
在python中将list分段并保存为array类型的方法
Jul 15 Python
python区分不同数据类型的方法
Oct 14 Python
基于Python和PyYAML读取yaml配置文件数据
Jan 13 Python
4款Python 类型检查工具,你选择哪个呢?
Oct 30 Python
Python基础之操作MySQL数据库
May 06 Python
Python基于Tkinter开发一个爬取B站直播弹幕的工具
May 06 Python
总结Python使用过程中的bug
Jun 18 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自动更新新闻DIY
2006/10/09 PHP
以文本方式上传二进制文件的PHP程序
2006/10/09 PHP
手把手教你使用DedeCms V3的在线采集图文教程
2007/04/03 PHP
PHP写杨辉三角实例代码
2011/07/17 PHP
php操作memcache缓存方法分享
2015/06/03 PHP
jquery插件jbox使用iframe关闭问题
2009/02/09 Javascript
javascript JSON操作入门实例
2010/04/16 Javascript
自己动手制作jquery插件之自动添加删除行的实现
2011/10/13 Javascript
js实现从中间开始往上下展开网页窗口的方法
2015/03/02 Javascript
jquery插件jquery.confirm弹出确认消息
2015/12/22 Javascript
4种JavaScript实现简单tab选项卡切换的方法
2016/01/06 Javascript
jQuery UI库中dialog对话框功能使用全解析
2016/04/23 Javascript
Bootstrap简单表单显示学习笔记
2016/11/15 Javascript
js仿QQ邮箱收件人选择与搜索功能
2017/02/10 Javascript
JS实现队列的先进先出功能示例
2017/05/10 Javascript
javascript 面向对象实战思想分享
2017/09/07 Javascript
在Vue中使用axios请求拦截的实现方法
2018/10/25 Javascript
Vue项目报错:Uncaught SyntaxError: Unexpected token
2018/11/10 Javascript
关于layui 实现点击按钮添加一行(方法渲染创建的table)
2019/09/29 Javascript
Vue+Node服务器查询Mongo数据库及页面数据传递操作实例分析
2019/12/20 Javascript
vue中defineProperty和Proxy的区别详解
2020/11/30 Vue.js
python去除所有html标签的方法
2015/05/05 Python
Python开发之快速搭建自动回复微信公众号功能
2016/04/22 Python
Python算法之图的遍历
2017/11/16 Python
Python退火算法在高次方程的应用
2018/07/26 Python
python实现两个dict合并与计算操作示例
2019/07/01 Python
Python实现直方图均衡基本原理解析
2019/08/08 Python
python 定时器每天就执行一次的实现代码
2019/08/14 Python
python使用隐式循环快速求和的实现示例
2020/09/11 Python
梵蒂冈和罗马卡:Omnia Card Pass
2018/02/10 全球购物
即时搜索数百万张门票:SeatsForEveryone.com
2018/08/26 全球购物
毕业生就业推荐表自我鉴定
2014/03/20 职场文书
股份转让协议书
2014/04/12 职场文书
2016公司年会通知范文
2015/04/25 职场文书
考勤制度通知
2015/04/25 职场文书
聊聊pytorch测试的时候为何要加上model.eval()
2021/05/23 Python