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