Django的mysql配置


Django的mysql配置

目錄

Django的ORM框架簡介:

Django下配置使用mysql數據庫:

1.首先,安裝pymysql(此模塊的作用是用python來操作mysql)

2.創建自己需要連接的數據庫。

3.pycharm連接主機上的數據庫(此過程省略)

4. 修改項目中init.py 加入如下內容來提供pymysql引擎的支持

5.在setting.py文件中配置數據庫

6.至此,mysql配置完成。啟動項目python manage.py runserver


DjangoORM框架簡介:

ORM即對象關系映射,通過類和對象對數據庫進行操作,從而避免了直接使用SQL語句,通過面向對象編程思想,極大程度上方便了用戶操作數據庫,避免了繁瑣的SQL語句。

 

我是用的是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引擎的支持

 

5.在setting.py文件中配置數據庫

找到DATABASES選項,將自帶的sqlite3數據表注釋,添加mysql數據庫選項。這里的選項可以不用刻意記住,需要知道的是有這個選項就可以。

 

 具體參數了解:

1ENGINE定數據庫的后端引擎

'django.db.backends.mysql'
'django.db.backends.sqlite3'
'django.db.backends.oracle'
'django.db.backends.postgresql'

  • mysql引擎如下:
  • 'django.db.backends.mysql'

2NAME

  • 指定要連接的數據庫的名稱
  • 'NAME': 'mywebdb'

3USER

  • 指定登錄到數據庫的用戶名
  • 'USER':'root'

4PASSWORD

  • 接數據庫時使用的密碼。
  • 'PASSWORD':'123456'

5HOST

  • 連接數據庫時使用哪個主機。
  • 'HOST':'127.0.0.1'

6PORT

  • 連接數據庫時使用的端口。
  • 'PORT':'3306'

 

6.至此,mysql配置完成。啟動項目python manage.py runserver

 


錯誤處理:

坑一:

Django3.0/mysql ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3

解決辦法:

#在這里,直接在pycharm報錯的提示中找到這個base.py文件,注釋掉以下部分(35、36行)

if version < (1, 3, 3):

     raise ImproperlyConfigured("mysqlclient 1.3.3 or newer is required; you have %s" % Database.__version__)

 

 坑二:

我在注釋上面幾行后,重新運行項目,pycharm提示

following errors occurred on attempt to save files和Unable to save settings: Failed和Cannot Save Files

提示顯示不能保存文件,這里的原因在於pycharm

Pycharm --->setting取消下面的選項

 

坑三:

取消后發現依然提示錯誤,這次提示的錯誤時文件“拒絕訪問”。

看到這樣的提示第一時間想到的是權限問題,所以我修改了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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM