稍微記錄下Django2.2使用MariaDB和MySQL遇到的坑
現在演示一下整個流程吧
1.創建項目和應用
PS:你也可以使用PyCharm直接創建項目
2.注冊應用
先把剛剛創建的應用添加進去
3.配置MySQL或者MariaDB
4.PyMySQL替換默認的MySQLdb
Django使用的MySQLdb對Python3支持力度不夠,我們用PyMySQL來代替
這句話其實就是兼容代碼,這樣你導入mysqldb也相當于導入PyMySQL了
5.創建數據庫
Django除了默認的sqlite會幫你創建數據庫外(只創建對應的表),其他數據庫都不會幫你創建的,所以你需要自己創建
6.django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.
如果你的Django是最新的2.2,PyMySQL也是最新的0.93的話,你會發現Django會報錯:
django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.
這個是Django對MySQLdb版本的限制,我們使用的是PyMySQL,所以不用管它
7.AttributeError: 'str' object has no attribute 'decode'
再繼續運行發現又冒了個錯誤:AttributeError: 'str' object has no attribute 'decode'
這個就不能亂改了,所以先調試輸出下:
發現是對字符串進行了decode解碼操作:(一般對字符串進行編碼,二進制進行解碼)
解決也很簡單,改成encode即可
8.再運行
再運行就沒錯誤了
但也沒有什么東西
發現了個后臺貌似也登錄不上
9.生成對應的數據庫
先創建一個用戶的模型類
生成對應的數據庫(項目里可以寫個build.sh的腳本批量化執行)
這個有點類似Net的CodeFirst了
10.生成對應的后臺管理頁面
設置后臺語言,默認是英語的
創建超級管理員
在admin中注冊對應的模型類
這時候運行就可以管理對應的頁面了
登錄頁面
后臺管理主頁
這時候就可以創建修改UserInfo類了
我隨便創建了幾個用戶
這種對象直接tostring(str(xxx)
)會導致顯示不人性化,如果想知道顯示的字段也很簡單:
然后刷新下列表頁就ok了(如果手動輸入命令則不用重啟服務器,通過PyCharm運行的需要重新啟動下)
是不是輕輕松松就解決了對數據庫表的增刪改查?這就是Django的強大之處
逆天點評:Net的MVC最擅長的就是
快速生成前端頁面和對應的驗證
,而Python的Django最擅長的就是快速生成后臺管理頁面
。這兩個語言都是快速建站的常用編程語言(項目 V1~V2 階段)