导航:VS2019开发Django系列

下班回到家,洗漱完毕,夜已深。关于Django这个系列的博文,我心中的想法就是承接之前的微信小程序的内容,做一个服务端的管理中心,上新菜单,调整价格啊!之类的,有点想法,才能完成一系列的学习,要不然漫无目的,也不知道坚持的意义。

上一篇,我们已经完成了第一个Django的app hello world,这篇我们的主题内容是连接MySql数据库,因为工作当中使用的是MySql的数据库,且我自己也有这个环境,那么就直接考虑使用MySql数据库了。关于MySql服务的安装,就不在这里描述了,咱们直奔主题。

1)修改配置时区与语言代码,找到setting.py文件,修改里边的语言代码为:zh-Hans,修改时区为:Asia/Shanghai

# Internationalization
# https://docs.djangoproject.com/en/2.1/topics/i18n/
LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = True

2)修改数据库的配置, 官方文档中提共了如下4种数据库引擎,剩下的配置就是你的数据库的连接信息,信息配置完成之后,一定要在MySql中新建数据库DjangoLazyOrders

'django.db.backends.postgresql'
'django.db.backends.mysql'
'django.db.backends.sqlite3'
'django.db.backends.oracle'

# Database
# https://docs.djangoproject.com/en/2.1/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'DjangoLazyOrders',
'USER': 'test',
'PASSWORD': '',
'HOST': '127.0.0.1',
'PORT': '',
}
}

3)安装pymysql,类似于.Net中使用的MySql.Data.dll,这么理解就行了。首先cmd切换到项目的虚拟环境下的Scripts文件夹下(D:\项目\local\DjangoLazyOrders\env\Scripts),然后输入如下命令,回车,等待安装完成,安装完成后,我们能看到我们的安装的版本为0.9.3,这是目前最新的版本。批注:一定要先切换到虚拟环境下再安装

pip install pymysql

 4)添加models,如下实体拷贝自官方文档,其中__str__函数,类似于C#中重写ToString()方法,添加完了模型之后,一定要将我们的app注册到INSTALLED_APPS中,上一篇有提到。

from django.db import models

# Create your models here.
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
def __str__(self):
return self.question_text class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
def __str__(self):
return self.choice_text

5)数据迁移,如下图,选择Django进行迁移,直接异常了ModuleNotFoundError: No module named 'MySQLdb'找不到MySQLdb这个模块,要怎么解决这个问题呢?

打开__init__.py(hello)文件,将如下代码贴进去,再次进行迁移,上一个问题解决了,但是马上抛出了新的异常:django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.配置要求使用1.3.13或者更新的版本,而你正在使用的是0.9.3的版本,要怎么解决这个问题呢?看错误提示中提到了一个文件D:\项目\local\DjangoLazyOrders\env\lib\site-packages\django\db\backends\mysql\base.py,打开这个文件,直接搜索1.3.13定位到代码块,注释对版本校验的代码即可。

import pymysql
pymysql.install_as_MySQLdb()

接下来再次尝试进行迁移,WTF,再次异常:AttributeError: 'str' object has no attribute 'decode',没办法,只能再次根据提示找到D:\项目\local\DjangoLazyOrders\env\lib\site-packages\django\db\backends\mysql\operations.py文件,直接搜索errors='replace',定位到代码块,然后注释掉下图中的两行代码

再次尝试进行迁移,终于没有异常了,然后选择迁移,终于,终于,成功了。

正在执行 manage.py makemigrations
No changes detected
正在执行 manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, hello, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying hello.0001_initial... OK
Applying sessions.0001_initial... OK
>>>

然后我们去数据库中查看,数据库迁移成功,我们添加的实体,分别对应表hello_choice,hello_question

6)总结

  • 该篇主要介绍了怎么在Django中配置连接MySql数据
  • 完成了Code First的数据迁移

困了....待续....

VS2019 开发Django(三)------连接MySQL的更多相关文章

  1. django 中连接mysql数据库的操作步骤

    django中连接mysql数据库的操作步骤: 1 settings配置文件中 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mys ...

  2. VS2019 开发Django(八)------视图

    导航:VS2019开发Django系列 这几天学习了一下Django的视图和模板,从这几天的学习进度来看,视图这里并没有花很多的时间,相反的,模板花费了大量的时间,主要原因还是因为对Jquery操作d ...

  3. VS2019 开发Django(四)------models

    导航:VS2019开发Django系列 继上篇我们匆匆迁移数据库成功之后,又花了一个晚上研究了Django的模型,这里的模型其实就是ORM模型中的Entity,.Net里边用的比较多的有Entity ...

  4. VS2019 开发Django(二)------hello world!

    导航:VS2019开发Django系列 第一篇介绍了安装Django,那么,今天的主题内容是使用VS编写第一个Django应用. 1)新建Django Web项目 选择新建Django Web项目,在 ...

  5. 搭建django项目连接mysql数据库环境

    开通博客园这么久,即将写下第一篇博客,十分兴奋.首先了,庆祝自己写下了码农生涯博客园第一篇博客,其次了,庆祝自己经过了10个小时奋战,终于成功搭建django项目连接mysql数据库的环境.在此过程中 ...

  6. Error loading MySQLdb module: No module named 'MySQLdb'----------- django成功连接mysql数据库的方法

    在进行django学习过程中,尝试使用框架连接mysql数据库,启动服务器的时候经常遇到Error loading MySQLdb module: No module named 'MySQLdb' ...

  7. VS2019 开发Django(一)------环境配置

    导航:VS2019开发Django系列 缘起:学习是我一直在做的一件事情,但是,可怕的是不知道学习什么,然后止步不前,安于现状,曾经很长的一段时间,我是不知道学习什么,工作上的事情,其实是相对固定的, ...

  8. VS2019 开发Django(十一)------表单

    导航:VS2019开发Django系列 今天是中华人民共和国成立70周年的日子,普天同庆,看阅兵看得满腔热血,热泪盈眶,祖国都这么优秀了,我要更加努力才行啊! 这个Django系列的文章,没有很深入的 ...

  9. VS2019 开发Django(十)------JavaScript与Django的数据交互

    导航:VS2019开发Django系列 这一篇介绍如何使用BootStrap Table这个组件来绑定渲染数据, 1)先来看一下BootStrap Table是怎么绑定数据的. 通过数据属性 给定da ...

随机推荐

  1. asp.net core 从 3.0 到 3.1

    asp.net core 从 3.0 到 3.1 Intro 今天 .net core 3.1 正式发布了,.net core 3.1 正式版已发布,3.1 主要是对 3.0 的 bug 修复,以及一 ...

  2. ASP.NET Core 2 preview 1中Program.cs,Startup.cs和CreateDefaultBuilder的探索

    Exploring Program.cs, Startup.cs and CreateDefaultBuilder in ASP.NET Core 2 preview 1 ASP.NET Core 2 ...

  3. 【SSL题解报告】没有上司的舞会

    题目: 题目描述 某大学有N个职员,编号为1~N.他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.现在有个周年庆宴会,宴会每邀请来一个职员都会增加一定的快乐指 ...

  4. Android Activity生命周期及启动模式

    曾经搞过许多东西,再熟练的东西一段时间没有碰都会生疏或忘记.后来体会到写成文档记录下来的重要性,但有些word或ppt记录下来的东西随着时间流逝会丢失,或者不愿去看.或许保存成博客的形式,会是更好的选 ...

  5. Linux基础命令小技巧

    总结 CentOS(Community Enterprise Operating System,中文意思是:社区企业操作系统)是Linux发行版之一,它是来自于Red Hat Enterprise L ...

  6. Python如何爬取实时变化的WebSocket数据【华为云技术分享】

    一.前言 作为一名爬虫工程师,在工作中常常会遇到爬取实时数据的需求,比如体育赛事实时数据.股市实时数据或币圈实时变化的数据.如下图: Web 领域中,用于实现数据'实时'更新的手段有轮询和 WebSo ...

  7. 区块链学习笔记:DAY01 区块链的技术原理

    其实很早之前就听过区块链,也看过有关区块链的介绍,那个时候的理解主要还是一句话:分布式记账 然后开始关注比特币,听了有几年了,对于其来历.用途其实一直都是一知半解. 这次的课算是第一次以一个学员的身份 ...

  8. 【如何让代码变“高级”(二)】-这样操作值得一波666(Java Stream)(这么有趣)

    [如何让代码变“高级”(二)]-这样操作值得一波666(Java Stream)(这么有趣) 开发中的代码 在开发中的代码是不是很常见这样的代码: 这样的? for循环取元素取值 List<Us ...

  9. hibernate查询方式(二)

    1.HQL查询(hibernate query language) 操作的是实体类和属性 *查询所有记录 //1.hql查询操作会使用Query对象 // (1)写sql语句 创建Query对象, S ...

  10. git 使用详解(7)-- 远程仓库的使用

    要参与任何一个 Git 项目的协作,必须要了解该如何管理远程仓库.远程仓库是指 托管在网络上 的项目仓库,可能会有好多个,其中有些你 只能读,另外有些可以写.同他人协作开发某个项目时,需要管理这些远程 ...