Django框架下使用mysql資料庫
阿新 • • 發佈:2019-02-13
在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)