### ORM簡介
* MVC框架中包括一個重要的部分,就是ORM,它實現了數據模型與數據庫的解耦,即數據模型的設計不需要依賴于特定的數據庫,通過簡單的配置就可以輕松更換數據庫
* ORM是“對象-關系-映射”的簡稱,主要任務是:
* 根據對象的類型生成表結構
* 將對象、列表的操作,轉換為sql語句
* 將sql查詢到的結果轉換為對象、列表
* 這極大的減輕了開發人員的工作量,不需要面對因數據庫變更而導致的無效勞動
* Django中的模型包含存儲數據的字段和約束,對應著數據庫中唯一的表

* * * * *
### 使用MySql數據庫
在虛擬環境中安裝mysql包
~~~
pip install mysql-python
~~~
在mysql中創建數據庫
~~~
create databases test2 charset=utf8
~~~
打開settings.py文件,修改DATABASES項
~~~
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'test2',
'USER': '用戶名',
'PASSWORD': '密碼',
'HOST': '數據庫服務器ip,本地可以使用localhost',
'PORT': '端口,默認為3306',
}
}
~~~
* * * * *
### 開發流程
1. 在models.py中定義模型類,要求繼承自models.Model
2. 把應用加入settings.py文件的installed_app項
3. 生成遷移文件
4. 執行遷移生成表
5. 使用模型類進行crud操作
* * * * *
### 使用數據庫生成模型類
~~~
python manage.py inspectdb > booktest/models.py
~~~

~~~
# models.py
#!/usr/bin/env python
# -*-coding:utf-8-*-
from django.db import models
# 自定義管理器 篩選被刪除的 改寫get_queryset() 方法
# 管理器是模型類的屬性,用戶將對象與數據表映射
# 1.更改查詢集
# 2.增加模型類的創建方法,創建模型類對象
class BookInfoManager(models.Manager):
def get_queryset(self):
return super(BookInfoManager, self).get_queryset().filter(isDelete=False)
# 2 初始化類屬性的方法第二種 在管理中定義模型類的創建方法 推薦使用這種方法
def create(cls, btitle, bpub_date):
b = BookInfo()
b.btitle = btitle
b.bpub_date = bpub_date
b.bread = 0
b.bcomment = 0
b.isDelete = 0
return b
class BookInfo(models.Model):
btitle = models.CharField(max_length=20)
bpub_date = models.DateTimeField(db_column='pub_date') # 字段別名
bread = models.IntegerField(default=0) # 閱讀量
bcomment = models.IntegerField(null=False) # 評論 null= False 評論不能為空
isDelete = models.BooleanField(default=False) # 邏輯刪除
# 元選項
class Meta:
db_table = 'bookinfo' # 表名字
# ordering = ['id'] # 排序 會增加數據庫開銷
book1 = models.Manager() # 原始管理器
book2 = BookInfoManager() # 自定義管理器
# # 1.模型類的init方法不能用(model中有很多方法,不能覆蓋),用類方法的方式創建初始化對象
# @classmethod
# def create(cls,btitle,bpub_date):
# b = BookInfo()
# b.btitle = btitle
# b.bpub_date = bpub_date
# b.bread = 0
# b.bcomment = 0
# b.isDelete = 0
# return b
class HeroInfo(models.Model):
hnanme = models.CharField(max_length=10)
hgender = models.BooleanField(default=True)
hcontent = models.CharField(max_length=1000)
isDelete = models.BooleanField(default=False)
book = models.ForeignKey(BookInfo)
~~~
~~~
# views.py
#!/usr/bin/env python
# -*-coding:utf-8-*-
from django.shortcuts import render
from django.db.models import Max, F
from models import *
def index(request):
# list = BookInfo.book1.filter(heroinfo__hcontent__contains='六')
# list = BookInfo.book1.filter(pk__lge=3)
# 聚合函數
# Max1 = BookInfo.book1.aggregate(Max('bpub_date'))
# F對象
# list = BookInfo.book1.filter(bread__gt=20) # 閱讀量
list = BookInfo.book1.filter(bread__gt=F('bcomment')) # 閱讀量大于評論量
context = {'list1': list,
#'Max1': Max1,
}
return render(request, 'booktest/index.html', context)
~~~
~~~
<!---index.html---->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<ul>
{% for book in list1 %}
<li>{{ book.btitle }}----閱讀量[{{ book.bread }}]---評論量{{ book.bcomment }}</li>
{% endfor %}
</ul>
<!--{{ list1 }}-->
<hr>
{{ Max1 }}
</body>
</html>
~~~
- 系統編程
- 1.進程
- 1.1.fork
- 1.2.多個進程能否修改全局變量
- 1.3多次fork的問題
- 1.4.進程的創建-multiprocessing
- 1.5.進程的創建-Process子類
- 1.6.進程池Pool
- 1.7.進程間通信--Queue
- 2.線程
- 2.1.多線程-Threading
- 2.2.threading注意點
- 2.3.多線程-共享全局變量
- 2.4.線程和進程的對比
- 2.5.同步
- 2.6.互斥鎖
- 2.7.多線程-非共享數據
- 2.8.死鎖
- 2.9.同步應用
- 2.10.生產者與消費者模式
- 2.11.ThreadLocal
- 2.12.異步
- 2.13.GIL的問題
- 網絡編程
- 1.網絡概述-udp
- 1.1.TCP/IP
- 1.2.端口
- 1.3.ip地址
- 1.4.socket簡介
- 1.5.UDP介紹
- 1.6.udp網絡程序-發送數據
- 1.7.udp網絡程序-發送、接收數據
- 1.8.udp網絡程序-端口問題
- 1.9.udp綁定信息
- 2.0.udp網絡通信過程
- 2.1.udp應用:echo服務器
- 2.2.udp應用:聊天室
- 2.3.udp總結
- 2.4.udp綜合-模擬QQ
- 2.TFTP下載和上傳
- 3.TCP/IP
- 3.1.打開瀏覽器訪問百度的過程
- web服務器
- 1.1.MyWebServer.py
- 1.2.MyWebFramework.py
- 正則
- 1.1.re模塊
- 1.2.字符
- 1.3.原始字符串
- 1.4.表示數量
- 1.5.表示邊界
- 1.6.匹配分組
- 1.7.貪婪和非貪婪
- 數據結構和算法
- 1.引入概念
- 1.1.第一次嘗試
- 1.2.算法的提出
- 1.3.第二次嘗試
- 1.4.算法效率衡量
- 1.5.算法分析
- 1.6.常見時間復雜度
- 1.7.python內置類型性能分析
- 1.8.數據結構
- 2.順序表
- 2.1.順序表的形式
- 2.2.順序表的結構和實現
- 2.3.順序表的操作
- 2.4.python中的順序表
- 3.鏈表
- 3.1.單向鏈表
- 3.2.單向循環鏈表
- 3.3.雙向鏈表
- 4.棧
- 4.1.棧的結構實現
- 5.隊列
- 5.1.隊列的實現
- 5.2.雙端隊列
- 6.排序和搜索
- 6.1.冒泡排序
- 6.2.選擇排序
- 6.3.插入排序
- 6.4.快速排序
- 6.5.哈希排序
- 6.6.歸并排序
- 6.7.常見排序算法效率比較
- 6.8.搜索
- 7.樹與樹算法
- 7.1.二叉樹
- 7.2.二叉樹的遍歷
- 初識Django
- 1.小白
- 2.初次嘗試
- 3.管理站點
- 4.視圖
- 5.模板
- django模型
- 1.定義模型
- 2.模型成員
- 3.模型查詢
- 4.自連接
- django視圖
- django模板
- django高級
- django第三方
- django-git