Django models ORM基礎操作--白話聊Django系列
上次我們講完了views視圖,那我們這次來看一下Django強大的ORM,可以這麽說,你不懂Django的ORM,你就不懂Django,那廢話不多說
ORM又稱關系對象映射,在ORM裏,一張表就是一個類,一行數據就是類的一個對象
在Django中遵循code first的原則,即:根據代碼中定義的類來自動生成數據庫表
利用ORM來實現定義表,以及對表進行操作
註意:在連接數據庫上,Django默認是連接MySQLdb的,但是在python3中,不是很完美的支持這個模塊,所以創建的Django項目時,如果python版本為3時,則要在項目名下的init文件裏加入下面的代碼,如果運行過程中,報錯no module named MySQLdb,那就是這個原因了
import pymysql pymysql.install_as_MySQLdb()
另外,Django裏的連接方式默認為連接sqllite,如果想切換成其他的連接方式,比如連接MySQL,只需要在配置文件裏settings,註釋之前的,重新配置新的即可
#默認數據庫連接 # DATABASES = { # ‘default‘: { # ‘ENGINE‘: ‘django.db.backends.sqlite3‘, # ‘NAME‘: os.path.join(BASE_DIR, ‘db.sqlite3‘), # } # } #重新配置數據庫連接 DATABASES = { ‘default‘: { #MySQL的數據庫引擎 ‘ENGINE‘: ‘django.db.backends.mysql‘, ‘NAME‘:‘django_com‘, ‘USER‘:‘root‘, ‘PASSWORD‘:‘‘, } }
註意:NAME數據庫的名字,在mysql連接前,該數據庫必須已經創建,而上面的sqlite數據庫下的db.sqlite則是在創建項目時自動創建的
pycharm也支持表格顯示數據庫數據
為了能更好的查看數據同步,我們可以直接用pycharm查看的,跳過第三方數據庫操作軟件Navicate,只需要在pycharm安裝相應的數據庫驅動即可,具體做法如下:
右側欄-->Database--> + -->Data Source-->選擇數據庫驅動
點擊download後,設置後數據名和用戶名和密碼,點擊apply和ok,就可以了,直接可以在pycharm點擊查看數據庫表,如果你用的是sqlite數據庫就更簡單了,直接將sqlite拖動到Database就可以了
前奏說多了,接下來我看看怎麽用ORM實現對數據的增刪改查
首先我們必須創建表,那就要定義表類了,並且繼承某個類,在Django中的要繼承的類是models.Model
class UserInfo(models.Model): name = models.CharField(max_length=24) age = models.IntegerField() sex = models.BooleanField(max_length=1,choices=((0,‘男‘),(1,‘女‘),)) email = models.EmailField() home_adr = models.CharField(max_length=56) def __str__(self): return self.name
Django提供很多的字段,這些字段輔助form表單驗證
接下來的是操作數據
增:create 和 對象.save
def create_data1(**kwargs): ret = models.Author.objects.create(**kwargs) def create_data2(**kwargs): ob = models.Author(**kwargs) ob.save()
刪:delete
def delete_data(**kwargs): models.Author.objects.filter(**kwargs).delete()
改:update
def update_data(**kwargs): models.Author.objects.filter(**kwargs).update(name=‘laoliu‘)
查:all first get filter values
#取所有 def find_data_all(**kwargs): r = models.UserInfo.objects.all() return r #取某一個,獲取不到報錯 def find_data_one(**kwargs): r = models.UserInfo.objects.get(**kwargs) return r #取第一個 def find_data_first(**kwargs): r = models.UserInfo.objects.first() return r #篩選條件查,多個對象 def find_data_filter(**kwargs): r = models.UserInfo.objects.filter(**kwargs) return r #篩選字段查,多個對象 def find_data_value(*args): r = models.UserInfo.objects.values(*args) return r
Django models ORM基礎操作--白話聊Django系列