orm连接mysql_Django项目如何使用ORM连接MySQL
1. 手動(dòng)創(chuàng)建數(shù)據(jù)庫(kù)
2. 在settings.py里面配置一下數(shù)據(jù)庫(kù)的連接信息(告訴Django連接哪一個(gè)數(shù)據(jù)庫(kù))
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 連接數(shù)據(jù)庫(kù)的類型
'NAME': 'day62xiawu', # 數(shù)據(jù)庫(kù)名字
'HOST': '127.0.0.1', # IP
'PORT': 3306, # 端口
'USER': 'root', # 用戶名
'PASSWORD': '123456', # 密碼
}
}
3. 在和settings.py同目錄下的__init__.py文件中,告訴Django用pymysql代替MySQLdb來連接數(shù)據(jù)庫(kù)
import pymysql
pymysql.install_as_MySQLdb()
4. 在app/models.py中,定義類,類一定要繼承models.Model
class Book(models.Model):
id = models.AutoField(primary_key=True)
title = models.CharField(max_length=32)
5. 執(zhí)行兩條命令
1. 在哪兒執(zhí)行?
在項(xiàng)目的根目錄(有manage.py文件的那個(gè)目錄)
2. 命令
python manage.py makemigrations --> 將models.py文件中的改動(dòng)記錄在小本本(app/migrations/00xx_****.py)上
python manage.py migrate --> 將改動(dòng)翻譯成SQL語句,去數(shù)據(jù)庫(kù)中執(zhí)行
2. 表和表之間的關(guān)系
1. 一對(duì)多(出版社和書)
publisher = models.ForeignKey(to="Publisher")
在數(shù)據(jù)庫(kù)中:
有沒有publisher這個(gè)字段?
數(shù)據(jù)庫(kù)中實(shí)際 生成的是一個(gè) publisher_id 字段
2. 多對(duì)多(作者和書)
books = models.ManyToManyField(to="Book")
在數(shù)據(jù)庫(kù)中:
是通過第三張表建立的關(guān)系
3. 增刪改查操作
1. 單表增刪改查
增:
models.Publisher.objects.create(name="沙河出版社")
查:
models.Publisher.objects.get(id=1)
models.Publisher.objects.get(name="沙河出版社")
刪:
models.Publisher.objects.get(id=1).delete()
改:
obj = models.Publisher.objects.get(id=1)
obj.name = "沙河第二出版社"
obj.save()
2. 外鍵的增刪改查
增、刪、查同上
book_obj = models.Book.objects.get(id=1)
book_obj.publisher 是什么? *****
和我這本書關(guān)聯(lián)的出版社對(duì)象
book_obj.publisher.id 和我這本書關(guān)聯(lián)的出版社的id值
book_obj.publisher.name 和我這本書關(guān)聯(lián)的出版社的名稱
book_obj.publisher_id 是什么?
和我這本書關(guān)聯(lián)的出版社的id值
3. 多對(duì)多操作
1. 查id為1的作者都寫過的書?
author_obj = models.Author.objects.get(id=1)
author_obj.books.all() --> 和我這個(gè)作者關(guān)聯(lián)的所有書對(duì)象
2. 想給作者綁定多本書?
author_obj = models.Author.objects.get(id=1)
author_obj.books.set([1,2,3]) --> 把id是1、2、3的書和我這個(gè)作者關(guān)聯(lián)上
總結(jié)
以上是生活随笔為你收集整理的orm连接mysql_Django项目如何使用ORM连接MySQL的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《病中得樊大书》第四句是什么
- 下一篇: python中如何判断两个字符串是否相等