Django的mysql配置
目錄python
Django的ORM框架簡介:mysql
Django下配置使用mysql數據庫:web
1.首先,安裝pymysql(此模塊的做用是用python來操做mysql)sql
2.建立本身須要鏈接的數據庫。數據庫
3.pycharm鏈接主機上的數據庫(此過程省略)django
4. 修改項目中init.py 加入以下內容來提供pymysql引擎的支持編程
5.在setting.py文件中配置數據庫windows
6.至此,mysql配置完成。啓動項目python manage.py runserver 後端
Django的ORM框架簡介:
ORM即對象關係映射,經過類和對象對數據庫進行操做,從而避免了直接使用SQL語句,經過面向對象編程思想,極大程度上方便了用戶操做數據庫,避免了繁瑣的SQL語句。oracle
我是用的是pycharm直接鏈接Windows上的mysql數據庫。用Django3.0版本
Django下配置使用mysql數據庫:
1.首先,安裝pymysql(此模塊的做用是用python來操做mysql)
Pip install pymysql
2.建立本身須要鏈接的數據庫。
create database mywebdb default charset utf8 collate utf8_general_ci; #這裏我建立了一個名爲mywebdb的數據庫。
3.pycharm鏈接主機上的數據庫(此過程省略)
4. 修改項目中init.py 加入以下內容來提供pymysql引擎的支持
![](http://static.javashuo.com/static/loading.gif)
5.在setting.py文件中配置數據庫
找到DATABASES選項,將自帶的sqlite3數據表註釋,添加mysql數據庫選項。這裏的選項能夠不用刻意記住,須要知道的是有這個選項就能夠。
![](http://static.javashuo.com/static/loading.gif)
具體參數瞭解:
(1)ENGINE指定數據庫的後端引擎
'django.db.backends.mysql'
'django.db.backends.sqlite3'
'django.db.backends.oracle'
'django.db.backends.postgresql'
- mysql引擎以下:
- 'django.db.backends.mysql'
(2)NAME
- 指定要鏈接的數據庫的名稱
- 'NAME': 'mywebdb'
(3)USER
- 指定登陸到數據庫的用戶名
- 'USER':'root'
(4)PASSWORD
- 接數據庫時使用的密碼。
- 'PASSWORD':'123456'
(5)HOST
- 鏈接數據庫時使用哪一個主機。
- 'HOST':'127.0.0.1'
(6)PORT
- 鏈接數據庫時使用的端口。
- 'PORT':'3306'
6.至此,mysql配置完成。啓動項目python manage.py runserver
錯誤處理:
坑一:
解決辦法:
#在這裏,直接在pycharm報錯的提示中找到這個base.py文件,註釋掉如下部分(3五、36行)
if version < (1, 3, 3):
![](http://static.javashuo.com/static/loading.gif)
坑二:
我在註釋上面幾行後,從新運行項目,pycharm提示
following errors occurred on attempt to save files和Unable to save settings: Failed和Cannot Save Files
提示顯示不能保存文件,這裏的緣由在於pycharm
Pycharm --->setting取消下面的選項
![](http://static.javashuo.com/static/loading.gif)
坑三:
取消後發現依然提示錯誤,此次提示的錯誤時文件「拒絕訪問」。
看到這樣的提示第一時間想到的是權限問題,因此我修改了windows上base.py的文件權限,修改權限後,base.py文件能夠被修改。
坑四:
修改base.py文件後運行項目又報如下錯誤:
AttributeError: ‘str’ object has no attribute ‘decode’
#經過錯誤提示找到operations.py文件,將decode改成encode
if query is not None:
query = query.decode(errors='replace')
return query
#改成
if query is not None:
query = query.encode(errors='replace')
return query