日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Django:模型model和数据库mysql(一)

發布時間:2025/7/25 数据库 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django:模型model和数据库mysql(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

以一個栗子嘗試來記錄:

兩個表存儲在數據庫中,BookInfo表示書,HeroInfo表示人物。一本書中有多個人物

在MySQL中新建一個數據庫Django1,不用創建表,用Django模型來配置數據庫

1、數據庫ER圖

2、數據庫配置

在settings.py中進行數據庫的配置。

留意:django默認連接的是sqlite3數據庫。我們需要修改成MySQL

django1/settings.py

DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'django1','USER': 'root','PASSWORD': '123', 'HOST': 'localhost', 'PORT': '3306' } }

PS:

在Python3中用MySQLdb連接MySQL會猜到一個坑:MySQLdb 只適用于python2.x,發現pip裝不上。它在py3的替代品是:import pymysql

而Django默認的還是使用MySQLdb:執行會報:ImportError: No module named 'MySQLdb'

以下為安裝MySQLdb的解決方法:

方法一:安裝mysqlclient 1.3.10版本

pip install mysqlclient==1.3.10

方法二:

在站點的?__init__.py?文件中添加

import pymysql pymysql.install_as_MySQLdb()

3、創建應用

在一個工程里面可以創建多個應用(app)。每個應用對應一種業務

# 創建應用的命令 python manage.py startapp booktest

?

?執行后,多了一個booktest目錄。該目錄就是這個應用所在的目錄。

?

4、定義模型類

通過定義模型類去生成數據庫。而不是直接寫數據庫的表

模型類需要繼承django.db.models.Model

注意:在模型類中,不需要定義PK(主鍵)的

當輸出對象的時候,系統會調用__str__()方法(描述對象本身)

booktest/models.py

from django.db import models# Create your models here.class BookInfo(models.Model):# 設置字段btitle = models.CharField(max_length = 20)bpub_date = models.DateTimeField()def __str__(self):return self.btitleclass HeroInfo(models.Model):# 設置字段hname = models.CharField(max_length = 10)hgender = models.BooleanField()hcontent = models.CharField(max_length = 1000)hbook = models.ForeignKey(BookInfo, on_delete = models.CASCADE)def __str__(self):return self.hname

5、啟動服務器

在命令行輸入

# 表示啟動django服務器,默認使用8000端口 python manage.py runserver# 使用8080作為端口 python manage.py runserver 8080

然后通過瀏覽器端訪問?http://127.0.0.1:8080/

看到django已經成功啟動后,此時數據庫django1中多了一個表django_miggrations

6、生成數據庫的表

首先需要激活模型,編輯settings.py文件,在INSTALLED_APPS加上應用的名稱(booktest)

django1/settings.py

INSTALLED_APPS = ('django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','booktest' )

然后生成遷移文件,在命令行輸入

# 然后生成遷移文件,在命令行輸入 python manage.py makemigrations# 此時在booktest目錄下生成子目錄migrations,里面有0001_initial.py # 0001_initial.py里面系統會主動幫我們的表生成id字段# 執行遷移,執行SQL語句生成數據庫 python manage.py migrate

隨后刷新數據庫就能在一堆表里看到?booktest_bookinfobooktest_heroinfo 兩個表啦

7、測試數據操作

# 進入django的shell python manage.py shell# 進行簡單的測試(帶有django項目的一些配置)導入相關的包 from booktest.models import BookInfo, HeroInfo from django.utils import timezone from datetime import *# 查詢所有書的信息 BookInfo.objects.all()# 新建一本書的信息 b = BookInfo() b.btitle = '射鳥英雄傳' b.bpub_date = datetime(year = 2018, month = 8, day = 11) b.save()# 查詢某本書的信息 b1 = BookInfo.objects.get(pk = 1) b1.id b1.btitle b1.bpub_date# 刪除書 b1.delete()# 獲取關聯集合:(與書有關的所有人物) b.heroinfo_set.all()# 創建關聯的數據,不用save()都Ok b.heroinfo_set.create(hname='歐陽瘋', hgender=False, hcontent = '蛤蟆功')

?

轉載于:https://www.cnblogs.com/kumata/p/9643989.html

總結

以上是生活随笔為你收集整理的Django:模型model和数据库mysql(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。