目錄python
DATABASES = { "default": { "ENGINE": "django.db.backends.mysql", "NAME": "你的數據庫名稱", # 須要本身手動建立數據庫 "USER": "數據庫用戶名", "PASSWORD": "數據庫密碼", "HOST": "數據庫IP", "POST": 3306 } }
__init__.
py文件中寫以下代碼,告訴Django使用pymysql模塊鏈接MySQL數據庫:import pymysql pymysql.install_as_MySQLdb()
WARNINGS: ?: (mysql.W002) MySQL Strict Mode is not set for database connection 'default' HINT: MySQL's Strict Mode fixes many data integrity problems in MySQL, such as data truncation upon insertion, by escalating warnings into errors. It is strongly recommended you activate it.
#解決辦法一 OPTIONS: {'init_command': "SET sql_mode='STRICT_TRANS_TABLES'"}, #解決辦法二 #去設置 mysql文件的的my.ini sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" #在輸入命令重啓mysql(windos系統) net stop mysql net start mysql
from django.db import models class Publisher(models.Model): pid = models.AutoField(primary_key=True) name = models.CharField(max_length=32, unique=True) """ 出版社 表設計 表名 Publisher pid爲出版社的id,設置爲主鍵,默認爲int類型 primary_key=True 字段名爲pid name爲出版社的名字,限制字符長度32,設置惟一屬性unique=True 字段名爲name 還能夠添加,電話,辦公地址等字段,我這裏就不添加了 """ class Book(models.Model): title = models.CharField(max_length=32) pub = models.ForeignKey("Publisher",on_delete=models.CASCADE) """ 圖書 表設計 表名 Book title爲書名 限制字符長度32 put爲外鍵 models.ForeignKey ("Publisher")關聯Publisher表 on_delete=models.CASCADE設置級聯關係 """
級聯刪除 (設置級聯的爲弱勢方,關聯方刪除,本身也會刪除,本身刪除,卻不影響對方)mysql
刪除南方出版社,對應的 大胖小胖減肥日記圖書也被刪除了sql
class Class(models.Model): cid = models.AutoField(primary_key=True) cname = models.CharField(max_length=32, unique=True) """ cid 主鍵 cname 約束32位的字符,unique=True 約束惟一 """ class Student(models.Model): sid = models.AutoField(primary_key=True) s_name = models.CharField(max_length=32,null=False) gender = models.CharField(max_length=2,default='男') class_id = models.ForeignKey("Class",on_delete=models.CASCADE) """ sid 主鍵 s_name 字符 32位 非空約束 gendef 字符 2位 默認設置爲男 class 外鍵 關聯Class表 , 級聯設置 """
#要實現做者表關聯出版社和書記表,建立第四章表,來創建練習 #第一種 django幫咱們生成第三張表 class Author(models.Model): name = models.CharField(max_length=32) books = models.ManyToManyField('Book') # 不在Author表中生產字段,自動生成第三張表 """ name 做者名字 32爲字符 books Book和Author多對多的關係。books是Author跟Book關聯的全部對象。books的做用是在 Author和Book中建立一箇中間的關係對象,放在第三張表中,再根據這個中間的關係來獲取Book中關聯的對象 """
class AuthorBook(models.Model): author = models.ForeignKey(Author, on_delete=models.CASCADE) book = models.ForeignKey(Book, on_delete=models.CASCADE) date = models.DateField() """ author 關聯 Author做者表 外鍵 級聯設置 book 關聯 Book圖書表 外鍵 級聯設置 date 日期屬性 能夠添加更多字段,就操做比麻煩 """ #調用方法 author_obj = models.Author.objects.create(name=author_name) # 只插入book表中的內容 author_obj.books.set(books) # 設置做者和書籍多對多的關係
class Author(models.Model): name = models.CharField(max_length=32) books = models.ManyToManyField('Book',through='AuthorBook') # through='AuthorBook' 不在Author表中生產字段, 也不生產第三張表 class AuthorBook(models.Model): author = models.ForeignKey(Author, on_delete=models.CASCADE)#外鍵關聯 Author表 級聯設置 book = models.ForeignKey(Book, on_delete=models.CASCADE)#外鍵關聯 Book表 級聯設置 date = models.DateField()#能夠設置更多字段