python 中,連接mysql一般都推薦用pymysql ,而且在django中,網上的教程都是這么連接mysql的.
import pymysql
pymysql.install_as_MySQLdb()
這實際是pymysql模塊調用了模塊中的一個函數 install_as_MySQLdb(),這個函數的注釋是這么說的.
After this function is called, any application that imports MySQLdb or
_mysql will unwittingly actually use pymysql.
大概意思是:
調用此函數后,任何導入MySQLdb或_mysql的應用程序都會在不經意間實際使用pymysql。
最近在使用Django 3.0 中, 導入 Pymsql的時候報錯,提示Mysqlclient版本問題,.既然django 在我們選擇使用MYSQL的情景時,實際自動調用的是MySQLdb, Pymysql是可有可無的,我就直接pip install 了最新版的MySQLdb, 版本號是1.4.6, 在沒使用Pymysql, 也不用在settings中自己導入MySQLdb的情況下,順利連接我的MySQL .
我本地的安裝的是MySQL8.0 ,用來練習Django中的ORM操作,沒有發現問題. 我還沒測試過Mysql 5.6 5.7版本.估計也沒問題,(注:django不支持Mysql5.6以下的版本)
看來老方法有 OUT 了的可能性.
發布出來供大家參考, 如果有版本兼容性問題,還勞煩在本帖下留言,供大家分享.
補充:
django3.0官方文檔說,3.0需要mysqlclient 1.3.13或者更高版本的支持,並且mysqlclient是推薦的數據庫驅動程序.
除了mysqlclient, django還可以使用Connector/Python 作為mysql的數據庫驅動程序,這個驅動可以在dev.mysql.com下載. 這個驅動是Oracle提供的純python驅動, 不需要MySQL客戶端庫或標准庫之外的任何Python模塊作為支持.
不管mysqlclient還是Connector/Python都支持線程安全和連接池特性。
