Django連結現有MySQL資料庫

Steven Wang
4 min readFeb 8, 2019

--

MySQL & workbench #相關設定about資料庫 > 要先有DB資料


pip install PyMySQL安裝 (注意在同一個終端機之下)
django-admin startproject project_name
python manage.py startapp app_name


設定__init__.py #讓PyMySQL替代MySQLdb
import pymysql
pymysql.install_as_MySQLdb()


settings.py設定database
DATABASES = {
‘default’: {
‘ENGINE’: ‘django.db.backends.mysql’,
‘NAME’: ‘mydatabase’, #here is import
‘USER’: ‘root’,
‘PASSWORD’: ‘2xuixlji’,
‘HOST’: ‘localhost’,
‘PORT’: ‘3306’,
}
}

連結已有的資料庫與Django app

python manage.py inspectdb将執行後出现的文件copy到model.py中

python manage.py inspectdb > myapp/models.py #引用inspectdb套件建立模型

建立migrations資料表

python manage.py makemigrations (myapp)

migrate同步資料表

python manage.py migrate myapp (0001)

讀取MySQL資料至網頁上

urls.py
from django.contrib import admin
from django.urls import path
from blog import views

urlpatterns = [
path(‘admin/’, admin.site.urls),
path(‘blog/’,views.blogs)
]

views.py#业务逻辑层
from django.http import HttpResponse
from django.shortcuts import render, render_to_response
from blog import models

def blogs(request):
# return HttpResponse(“Hello world ! “)
# article = models.Blog.objects.get(pk=’41078855')
# return render(request, ‘blog/index.html’, {“article”: articles})
#获取全部博客信息
articles = models.Blog.objects.all()
#返回至前端渲染
return render_to_response(“blog/index.html”,locals()) #必须用这个return

index.html
<!DOCTYPE html>
<html lang=”en”>
<head>
<meta charset=”UTF-8">
<title>CSDN</title>
</head>
<body>
<!_ _<h1>{{ article.title }}</h1> _ _>
<!_ _<h3>{{ article.viewcnt }}</h3> _ _>
<body>
<p>博文信息</p>
{% for article in articles %}
<p>{{article.title}}&nbsp&nbsp&nbsp:&nbsp&nbsp&nbsp{{article.viewcnt}}</p>
<br>
{% endfor %}
</body>
</body>
</html>

--

--

Steven Wang
Steven Wang

No responses yet