1. 程式人生 > >Django框架下使用mysql資料庫

Django框架下使用mysql資料庫

在Django框架下,其python中預設使用的是sqlite資料庫,因此這裡我們更改為更常用的輕量型的MYSQL.

首先,在Linux系統中安裝好mysql:

sudo apt-get install mysql-server

然後按照步驟操作即可.詳細細節就自行百度了.接著在python環境中安裝pymysql包:
pip install pymysql

此時我們接著需要配置Django相關配置檔案,主要是setting.py檔案:

更改原來預設檔案內容為:


其實就是在setting裡面配置指定使用mysql資料庫,使用資料庫名,使用者,密碼,ip地址,埠.

接著在__init__.py檔案加上:

import pymysql

pymysql.install_as_MySQLdb()

在setting.py檔案中新增要生成的應用名稱:


然後用以下的命令生成相關應用檔案:


然後在生成的myapp1檔案下的models.py檔案上使用models類操作資料庫資料,並且將其關聯起來

#models.py
from django.db import models

# Create your models here.

class Grades(models.Model):
	g_name = models.CharField(max_length=20)
	g_date = models.DateTimeField()
	g_girlnum = models.IntegerField()
	g_boynum = models.IntegerField()
	isDelete = models.BooleanField(default=False)

class Students(models.Model):
	s_name = models.CharField(max_length=20)
	s_gender = models.BooleanField(default=True)
	s_age = models.IntegerField()
	s_contend = models.CharField(max_length=20)
	isDelete = models.BooleanField(default=False)
	# 關聯外界
	s_grade = models.ForeignKey("Grades", on_delete=models.CASCADE)
	
	
	
其次將其生成資料庫遷移檔案:


檢視資料庫生成的表:



生成兩個空表,接著在啟動相應python shell 操作往資料庫裡面新增資料


檢視資料庫表,得到更新的資料


繼續新增資料,並且檢視


包含比較敏感字眼,在此就不顯示了

然後講整個應用run起來


在瀏覽器上開啟:127.0.0.1:8000

在這之前我們配置setting.py檔案,使其支援中文顯示


效果:


但是每次需要一些對釋出公告的操作時候,都需要很複雜重複的新增修改等操作,我們希望可以像介面一樣實現視覺化操作,那麼Django也提供了這樣的支援:

新增超級管理員:


然後在瀏覽器登入:127.0.0.1:8000/admin



接下來我們展示如何管理我們的資料表:

在myapp1資料夾下的admin.py檔案中加入註冊模型程式碼:

# admin.py
from django.contrib import admin

# Register your models here.
# 從當前匯入模型
from .models import Grades,Students
# 進行註冊
admin.site.register(Grades)
admin.site.register(Students)



我們把介面定義的更友好一些:

我們修改admin.py

# admin.py
from django.contrib import admin

# Register your models here.
# 從當前匯入模型
from .models import Grades,Students
# 進行註冊

class GradesAdmin(admin.ModelAdmin):
	# 列表屬性新增
	# 列表
	list_display = ['pk', 'g_name', 'g_date', 'g_girlnum', 'g_boynum', 'isDelete']
	# 過濾器
	list_filter = ['g_name']
	# 搜尋
	search_fields = ['g_name']
	# 分頁
	list_per_page = 5
	
	# 新增,修改屬性,這兩個不能同時使用
	# 規定屬性的先後順序
	# fields= ['g_girlnum', 'g_boynum', 'g_date', 'g_name', 'isDelete']
	# 給屬性分組
	fieldsets = [
		("num", {"fields":["g_girlnum", "g_boynum"]}),
		("base", {"fields":["g_name", "g_date", "isDelete"]})
	]


admin.site.register(Grades, GradesAdmin)
admin.site.register(Students)

效果分別如下:


同時資料庫也同步更新了資料

下面把Students類也關聯進來:

from django.contrib import admin

# Register your models here.
# 從當前匯入模型
from .models import Grades,Students
# 進行註冊

class GradesAdmin(admin.ModelAdmin):
	# 列表屬性新增
	# 列表
	list_display = ['pk', 'g_name', 'g_date', 'g_girlnum', 'g_boynum', 'isDelete']
	# 過濾器
	list_filter = ['g_name']
	# 搜尋
	search_fields = ['g_name']
	# 分頁
	list_per_page = 2
	
	# 新增,修改屬性,這兩個不能同時使用
	# 規定屬性的先後順序
	# fields= ['g_girlnum', 'g_boynum', 'g_date', 'g_name', 'isDelete']
	# 給屬性分組
	fieldsets = [
		("num", {"fields":["g_girlnum", "g_boynum"]}),
		("base", {"fields":["g_name", "g_date", "isDelete"]})
	]


class StudentsAdmin(admin.ModelAdmin):
	# 列表屬性新增
	# 列表
	list_display = ['pk', 's_name', 's_gender', 's_age', 's_contend', 'isDelete']
	# 過濾器
	list_filter = ['s_name']
	# 搜尋
	search_fields = ['s_name']
	# 分頁
	list_per_page = 2
	
	# 新增,修改屬性,這兩個不能同時使用
	# 規定屬性的先後順序
	# fields= ['g_girlnum', 'g_boynum', 'g_date', 'g_name', 'isDelete']
	# 給屬性分組
	fieldsets = [
		("num", {"fields":["s_name", "s_contend"]}),
		("base", {"fields":["s_age", "s_gender", "isDelete"]})
	]


admin.site.register(Grades, GradesAdmin)
admin.site.register(Students, StudentsAdmin)