Django連接MySQL教學 == 1.安裝套件 -- ==安裝pymysql== ```python pip install pymysql #pip poetry add pymysql #poetry ``` ==安裝cryptography== ```py pip install cryptography #pip poetry add cryptography #poetry ``` 如果沒有cryptography會在migrations階段會報錯出現: ```python RuntimeError: ‘cryptography‘ package is required for sha256_password or caching... 原因:好像是mysql的認證機制需要這個 ``` 2.setting.py預設的DATABASES -- ```python DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / 'db.sqlite3', } } ``` 3.settings.py更改DATABASES -- ```python DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'database_name', # mySQL的數據庫名稱 'USER':'you_name', # mySQL的用戶名稱 'PASSWORD':you_password, # mySQL的密碼 'HOST':localhost, # mySQL的主機 'PORT':3306, # mySQL的固定端口 } } ``` 4.setting.py設定時區[(設定時區原因)](https:https://www.cnblogs.com/sunkanguse/p/13163929.html) -- ```python TIME_ZONE = 'Asia/Taipei' ``` 5.匯入pyMySQL -- django-admin startproject的資料夾裡面的__init__.py加上 ```python import pymysql pymysql.install_as_MySQLdb() ``` 6.創建MySQL設定 -- 接著在==mysql workbench==的應用程式 創建一個新的用戶(==MySQL connection右邊有個+的符號==)  名字都要跟你在==setting.py==裡面設定的都要一致  ==Connection Name==:名字可以自己取 ==Hostname==:改成localhost ==Username==:在setting.py設定User確認一致後按下ok 登入你的root(一開始你在安裝mysql會設定的超級管理員) 在左下切換==Administration== 進入==Users and Privileges== 應該找不到你剛剛創的用戶(如果有出現可以跳過此步驟) 在下方按下==Add Account== ==Login Name==:輸入你剛剛創建的Username ==Limit to Hosts Matching==:改成localhost ==Password==:輸入這個用戶以後要登入的密碼(跟setting.py檔裡面設定密碼相同 之後按下==apply== 回到==Workbench==的頁面 點+號旁邊的扳手圖示 點擊右下方的==Test connection==  輸入剛剛設定密碼->如果有跳出這個頁面代表成功  因為新創的用戶沒有創建數據庫權限 使用  輸入你的root超級管理員的密碼 進到這個頁面  輸入指令: ```sql GRANT CREATE ON *.* TO 'you_name'@'localhost'; ``` 回到新創的用戶輸入: ```sql create database you_name; /*名字要跟setting.py裡設定名字要一樣 ``` 回到vscode輸入: ```python python manage.py makemigrations ``` 顯示(成功) ```python No changes detected ``` 接著輸入: ```python python manage.py migrate ``` 回到mysql  完成
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up