django2.2+mysql8.0+mysqlclient+ubuntu18.04

此贴记录下用django2.2+mysql8.0得跌跌撞撞之路

一开始在ubuntu16.04开发,mysql也是最新8.0

选择驱动 

python连接mysql有四种驱动MySQL-python,mysqlclient,pymysql ,MySQL Connector/Python

参考链接:https://blog.csdn.net/cn_1937/article/details/81533544

  • MySQL-python:也就是MySQLdb。是对C语言操作MySQL数据库的一个简单封装。遵循了Python DB API v2。但是只支持Python2,目前还不支持Python3。
  • mysqlclient:是MySQL-python的另外一个分支。支持Python3并且修复了一些bug。
  • pymysql:纯Python实现的一个驱动。因为是纯Python编写的,因此执行效率不如MySQL-python。并且也因为是纯Python编写的,因此可以和Python代码无缝衔接。
  • MySQL Connector/Python:MySQL官方推出的使用纯Python连接MySQL的驱动。因为是纯Python开发的。效率不高。

先说此处遇到得坑,我一开始默认还是用pymysql,但是发现不支持mysql8.0还是不支持django2.2(我给忘了,反正就是报错了),然后我去看django官方文档,官方文档推荐了connector,安装试了下,还不错,挺好用,配置方法如下,官方文档里面有

DATABASES = {
    'default': {
        'ENGINE': 'mysql.connector.django',
        'NAME': 'abcde',
        'USER': 'root',
        'PASSWORD': 'root',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    }
}

然后坑来了 

  1. 我在使用ORM得sum聚合函数时,莫名报了个错,错误提示我记得说什么decimal(过后总结,有点忘了),但是我的字段里并没有FloatField
  2. 以前用mysql更新一个对象的数据,比如book = Book.objects.get(id=1),  book.name ='西游记', book.save(),这样做就没问题,更新就成功了,但是用这个驱动,只有save()会一直报错,还是不明确提示的错误(看我上一篇帖子),意思就是执行结果是None,真心把我恶心了一番,最后看了看源码,save()加参数 save(update_fields=['name']),这样才能成功,麻烦的一批

 被这些折磨怕了,想后面省点事,干脆换个驱动,于是选了mysqlclient, 这驱动还快点,

然后又一个坑来了,pip安装提示错误,找不到MySQL_config, 问度娘说是要安装依赖sudo apt-get install libmysqlclient-dev,然后我试着安装了这个玩意儿,但是还是提示报错,这次的报错更严重

django2.2+mysql8.0+mysqlclient+ubuntu18.04_第1张图片

问了度娘千百遍,花了一上午的时间也没解决掉,网上成功的方法都是基于windows,其他的试了没用,麻烦之余,发现有个哥们是ubuntu成功的,

参考链接:https://www.jianshu.com/p/cd56a4a44035

原来人用的18.04,怎么办,搞呗,下载镜像,安装,搞环境,

但是妈的,坑又来了,这次是系统的,我进入桌面,然后系统提示有更新,那就更新呗,结果更新之后重启,果断变砖,进步了桌面了,又去度娘,无奈,折腾两小时,没结局,又把虚拟机删了,重新来过,这次没敢更新了,后来抱着试试的心态(我备份了一份),在终端用apt upgrade给更新了,重启的时候心里瑟瑟发抖,还好没让我失望,这次ok了,然后就开开心心的装pycharm,mysql,按着先辈成功的案例,大功告成,折腾一天,可算有个结果了,

还有,这Ubuntu18还挺好用,比16流畅了不少,就是一时又没适应关闭从左又回到右了

你可能感兴趣的:(django2.2+mysql8.0+mysqlclient+ubuntu18.04)