django之python3.4及以上连接mysql的一些问题记录

首先,祭出大杀器whl

https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient

django1.x与django2.x 在项目的写法上有一些区别,常见的有以下:

1.配置文件中中间件的写法:

由middleware_class 直接改成:middleware  所以,在遇到直接从网上DOWN的项目的时候,一定要注意,这里的区别,否则你永远不知道各种错误是从哪里来的

2.就是url.include的写法

在django2.x中.app_name 是直接写到 app的url中,无需再在主的url中写这个

如:project的urls   

url(r'', include(('blog.urls','blog'),namespace='blog')),
app的urls:
from blog import views 

app_name="blog"
urlpatterns = [
url(r'^$', views.IndexView.as_view(), name='index'),
url(r'^blog/article/(?P<article_id>d+)$', views.ArticleDetailView.as_view(), name='detail'),


3.关于django连接mysql的各种资料中,以下做一个总结:

如果我们django 使用的python 版本为2.x的时候,我们连接mysql使用:pymysql  

1.pip install  pymysql

2.project的setting文件头部加上:

# import pymysql
# pymysql.install_as_MySQLdb()

如果我们python 版本使用的是3.4及以上的时候,我们连接mysql使用:mysqlclient
安装mysqlclient的时候,请使用上面的大杀器whl来安装
在这里搜索:https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient符合你操作系统以及当前python版本的mysqlclient,copy到你的project所在的目录,如下面的:

执行:pip install mysqlclient-1.4.2-cp36-cp36m-win_amd64.whl  执行安装,
注意,这时候,我们不需要再去改setting了,无需再添加 import pymysql这个,因为当前的数据库驱动使用的是:mysqlclient了

最后,执行: pip freeze ->requirement.txt

这里写这个东西的原因是:网上看到有很多神奇的歪招,让去改什么 site_package/django/db/backend/db.py里面的判断,不做置评,但是,这个改了之后,如果应用程序是在docker发布的时候,将是非常麻烦的,
总之,像这样改了之后,我是没有成功在docker中成功发布过应用,所以建议不去改动基础类库

原文地址:https://www.cnblogs.com/freewsf/p/10655356.html