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

歡迎訪問 生活随笔!

生活随笔

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

数据库

Django-ORM数据库操作

發布時間:2025/3/8 数据库 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django-ORM数据库操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

背景

Django框架功能齊全自帶數據庫操作功能,由于工作中設計巨量的api接口,需要一個很好的web后端服務框架,Django給了莫大的幫助。本文主要介紹Django的ORM框架
我們一般對數據庫的使用的認識是:

  • 創建數據庫,設計表結構和字段
  • 使用 MySQLdb 來連接數據庫,并編寫數據訪問層代碼
  • 業務邏輯層去調用數據訪問層執行數據庫操作

ORM是什么?

ORM:Object Relational Mapping(關系對象映射),在django中,根據代碼中的類自動生成數據庫的表也叫--code first。

  • 類名對應------》數據庫中的表名
  • 類屬性對應---------》數據庫里的字段
  • 類實例對應---------》數據庫表里的一行數據
  • obj.id obj.name.....類實例對象的屬性

Django ORM的優勢:

Django的orm操作本質上會根據對接的數據庫引擎,翻譯成對應的sql語句;所有使用Django開發的項目無需關心程序底層使用的是MySQL、Oracle、sqlite....,如果數據庫遷移,只需要更換Django的數據庫引擎即可。

總的來說,Django的ORM 在設計初已經考慮了大量web設計中數據庫操作的共有需求,配置好數據庫后,就可以像使用變量模型一樣操作數據庫中數據。

一、數據庫配置(MySQL)

1、創建數據庫 (注意設置 數據的字符編碼)
由于Django自帶的orm是data_first類型的ORM,使用前必須先創建數據庫
2、修改project中的settings.py文件中設置 連接 MySQL數據庫(Django默認使用的是sqllite數據庫)

DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME':'you mysql db name ','USER': 'user name','PASSWORD': 'password','HOST': 'your mydql db host','PORT': 'your mysql db port',} }

擴展:查看orm操作執行的原生SQL語句,在project中的settings.py文件增加。

LOGGING = {'version': 1,'disable_existing_loggers': False,'handlers': {'console':{'level':'DEBUG','class':'logging.StreamHandler',},},'loggers': {'django.db.backends': {'handlers': ['console'],'propagate': True,'level':'DEBUG',},} }

3、由于Django2.X后只支持python3,而目前MySQLdb對python3沒有支持,所以需要使用pymysql,在django項目中修改project 中的__init__py 文件設置 Django默認連接MySQL的方式

import pymysql pymysql.install_as_MySQLdb()

4、setings文件注冊APP

INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','app01.apps.App01Config',]

注冊APP后,Django會根據APP的名稱等生成并使用表/庫。Django中數據庫必須有非空主鍵,而且如果沒有聲明,所有的字段都會默認設計成非空。

  • 按照規則在models.py模塊中設計表。
  • 數據遷移操作。
  • python manage.py makemigrations #根據app下的migrations目錄中的記錄,檢測當前model層代碼是否發生變化? python manage.py migrate #把orm代碼轉換成sql語句去數據庫執行 python manage.py migrate --fake #只記錄變化,不提交數據庫操作

    注:由于所有字段都默認是非空,所以在增加字段時會報錯,

    解決辦法是增加:null=Ture,聲明。

    總結

    以上是生活随笔為你收集整理的Django-ORM数据库操作的全部內容,希望文章能夠幫你解決所遇到的問題。

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