手把手教你使用Django如何連接MySQL
前言
這次咱們來(lái)簡(jiǎn)述一下,Django如何連接Mysql。
默認(rèn)情況下,Django連接的是自己帶的sqlite數(shù)據(jù)庫(kù)。
這種數(shù)據(jù)庫(kù)好處是方便,不需要遠(yuǎn)程連接,打包項(xiàng)目挪到其他電腦上安裝一下依賴(lài)一會(huì)就跑起來(lái)了。
但是缺點(diǎn)就是,可能會(huì)出現(xiàn)各種莫名其面的問(wèn)題,所以,盡可能在開(kāi)始的時(shí)候,就配置上連接Mysql。
連接Mysql
Django連接Mysql分三步
- Mysql提前創(chuàng)建好數(shù)據(jù)庫(kù)。
- 修改Django的settings.py文件。
- 修改項(xiàng)目文件夾下的__init.py文件。
1.Mysql提前創(chuàng)建好數(shù)據(jù)庫(kù)
首先,我使用的是本機(jī)的Mysq,并且我在Mysq上創(chuàng)建了一個(gè)school數(shù)據(jù)庫(kù)。
2.修改Django的settings.py文件
創(chuàng)建一個(gè)Django項(xiàng)目,在項(xiàng)目文件夾下的settings.py下,找到原來(lái)的sqlite配置文件。
注銷(xiāo)或刪除sqlite配置,添加以下配置。
復(fù)制以下代碼
- DATABASES = {
- 'default': {
- 'ENGINE': 'django.db.backends.mysql', # 默認(rèn)
- 'NAME': 'school', # 連接的數(shù)據(jù)庫(kù)
- 'HOST': '127.0.0.1', # mysql的ip地址
- 'PORT': 3306, # mysql的端口
- 'USER': 'root', # mysql的用戶(hù)名
- 'PASSWORD': 'rootroot' # mysql的密碼
- }
- }
3.修改項(xiàng)目文件夾下的__init.py文件
由于配置了Mysql,所以要替換默認(rèn)的數(shù)據(jù)庫(kù)引擎,在項(xiàng)目文件夾下的__init__.py,添加以下內(nèi)容。
復(fù)制以下代碼
- import pymysql
- pymysql.install_as_MySQLdb()
如果沒(méi)有安裝pymysql,記得安裝一下,命令:pip install pymysql。
遷移數(shù)據(jù)庫(kù)
如果上述都沒(méi)問(wèn)題了,那我們來(lái)寫(xiě)個(gè)小Demo來(lái)跑一下試試。
遷移數(shù)據(jù)庫(kù)流程。
- 創(chuàng)建app(Django必須依賴(lài)app才能創(chuàng)建表)。
- settings.py中添加創(chuàng)建的app。
- 遷移。
1.創(chuàng)建app(Django必須依賴(lài)app才能創(chuàng)建表)
首先呢,我們需要在Django中,創(chuàng)建一個(gè)app。命令如下:
python manage.py startapp web
2. settings.py中添加創(chuàng)建的app
創(chuàng)建完之后,我們需要在settings.py中配置一下剛剛創(chuàng)建的app。
3.遷移
然后執(zhí)行命令,遷移數(shù)據(jù)庫(kù)到Mysql。
- python manage.py makemigrations
- python manage.py migrate
生成的表。
會(huì)生成很多其他表,不用管他,只要咱們要的。
我這里直接手動(dòng)向剛剛創(chuàng)建的表里面添加一些數(shù)據(jù)。
展示內(nèi)容
展示內(nèi)容大概分為以下幾個(gè)部分。
- 編寫(xiě)url。
- 編寫(xiě)視圖(views)。
- 編寫(xiě)html(templates)。
- 啟動(dòng)web。
1.編寫(xiě)url
- urls.py
- urlpatterns = [
- path('admin/', admin.site.urls),
- path('student_list', views.student_list),
- ]
2.編寫(xiě)視圖(views)
- web/views.py
- def student_list(request):
- student_queryset = models.Student.objects.all()
- return render(request,"student.html",{"student_queryset":student_queryset})
3.編寫(xiě)html(templates)
- templates/student.html
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Title</title>
- </head>
- <body>
- <table border="1">
- <thead>
- <tr>
- <td>id</td>
- <td>姓名</td>
- <td>年齡</td>
- <td>性別</td>
- <td>年紀(jì)</td>
- </tr>
- </thead>
- <tbody>
- {% for student in student_queryset %}
- <tr>
- <td>{{ student.id }}</td>
- <td>{{ student.name }}</td>
- <td>{{ student.age }}</td>
- <td>{{ student.gender }}</td>
- <td>{{ student.grade }}</td>
- </tr>
- {% endfor %}
- </tbody>
- </table>
- </body>
- </html>
| id | 姓名 | 年齡 | 性別 | 年紀(jì) |
| {{ student.id }} | {{ student.name }} | {{ student.age }} | {{ student.gender }} | {{ student.grade }} |
4.啟動(dòng)web
命令
- python manage.py runserver 127.0.0.1:8000
打開(kāi)游覽器,輸入http://127.0.0.1:8000/student_list
如圖所示!
總結(jié)
本次主要講述的是Django如何連接Mysql。并且順帶的做了一個(gè)測(cè)試小Demo,展示一個(gè)web是如何運(yùn)行起來(lái)的。如果基礎(chǔ)不好,我相信后面這些還是很有用的。
pymysql的版本不建議安裝太高,我的是pymysql版本是0.9.2,Django版本是2.1.5。
如果你覺(jué)得文章還可以,記得點(diǎn)贊留言支持我們哈。感謝你的閱讀,有問(wèn)題請(qǐng)記得在下方留言噢~
本文轉(zhuǎn)載自微信公眾號(hào)「Python爬蟲(chóng)與數(shù)據(jù)挖掘」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系Python爬蟲(chóng)與數(shù)據(jù)挖掘公眾號(hào)。







































