1. orm簡介css
2. Django使用mysql數據庫的步驟:python
1. 在mysql裏建立數據庫mysql
```sql
create database 數據庫名稱 default charset=utf8;
```jquery
2. 在setting裏配置git
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 指定爲MySQL引擎
'NAME': 'l18', # 指定數據庫的名稱
'HOST': 'localhost', # IP地址
'PORT': 3306, # 端口
'USER': 'root', # 用戶名
'PASSWORD': '123', # 密碼
}
}ajax
3. 在setting同級目錄下的init.py裏配置sql
import pymysql
pymysql.install_as_MySQLdb()
數據庫
4. 在APP下的models.py文件裏建立模型類django
class Book(models.Model):
title = models.CharField(max_length=32)
price = models.DecimalField(max_digits=5, decimal_places=2) # 最大值999.99
publisher = models.CharField(max_length=32) # 出版社名稱
pub_date = models.DateField() # 出版時間
api
5. 執行數據庫遷移命令
python3 manage.py makemigrations # 把models.py的變動記錄記錄下來
python3 manage.py migrate # 把變動記錄的操做同步到數據庫中
報錯:
1. 報錯一:
File "/home/moluo/.local/lib/python3.6/site-packages/django/db/backends/mysql/base.py", line 36, in <module>
raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__)
django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.
解決方法: 註釋掉36和37行代碼便可.
2. 報錯二:
File "/home/moluo/.local/lib/python3.6/site-packages/django/db/backends/mysql/operations.py", line 146, in last_executed_query
query = query.decode(errors='replace')
AttributeError: 'str' object has no attribute 'decode'
解決方法: 146行加上以下代碼:
query = query.encode()
6. 單表數據的相關操做
1. 新增
方式一:
直接實例化對象,注意必定要save
方式二:
經過objects提供的create方法建立
2. 修改
方式一:
獲取對象,修改對象的屬性,最後save
方式二:
直接使用update方法便可(支持批量修改)
3. 刪除
方式一:
獲取對象,調用delete方法
方式二:
filter以後,直接delete方法(支持批量刪除)
4. 查詢
1. 查詢api
all 獲取全部 QuerySet
filter 過濾 QuerySet
first 第一條 對象
get 獲取單條對象 對象
values QuerySet 裏面是字典
values_list QuerySet 裏面是元組
2. 基於雙下劃線的模糊查詢
Book.objects.filter(price__in=[100,200,300]) # 在...裏面
Book.objects.filter(price__gt=100) # 大於 gte 大於等於
Book.objects.filter(price__lt=100) # 小於 lte
Book.objects.filter(price__range=[100,200]) # 範圍
Book.objects.filter(title__contains="法") # 包含
Book.objects.filter(title__icontains="python") # 不區分大小寫
Book.objects.filter(title__startswith="九") # 以...開頭
Book.objects.filter(pub_date__year=2018) # 年份=...
7. 多表操做
1. 查詢操做
#基於對象的跨表查詢
# """
# 正向:按字段
# ----------->
# book publish
# <-----------
# 反向:小寫表名 +_set(一對一時不須要加_set)
# """
2. Q對象
python JavaScript orm的Q對象
and && & 與
or || | 或
not ! ~ 非
例子:
8. ajax的基本格式:
$.ajax({
url: "", // 提交的地址url
type: "", // 請求方式
success: function(){ // 回調函數
pass
}
})
1.在templates文件下的js文件夾添加一個js.jquery文件,把query.js放在文件下,地址:http://cdn.bootcss.com/jquery/3.3.1/jquery.js,或者 :http://cdn.bootcss.com/jquery/3.3.1/jquery.min.js
9.使用splite3數據庫心得
a.下載splite
b.數據庫配置:
c.在models中建立數據庫表名和字段
d.在控制檯執行遷移命令:
python3 manage.py makemigrations
python3 manage.py migrate
e.在python console中執行添加表數據,必定要先添加無外鍵的數據,添加完了再次添加有外鍵的數據----------重點
f.添加數據的例子:
dep表,無外鍵
models.Dep.objects.create(title="銷售部")
models.Dep.objects.create(title="關公部")
emps表,有外鍵(dep_id)
models.Emps.objects.create(name="令狐沖", age=24, salary=6000, dep_id=1, province="河南")
models.Emps.objects.create(name="任盈盈", age=18, salary=8000, dep_id=2, province="廣東")
models.Emps.objects.create(name="任我行", age=56, salary=10000, dep_id=1, province="廣東")
models.Emps.objects.create(name="嶽靈珊", age=19, salary=6000, dep_id=2, province="河南")
models.Emps.objects.create(name="小龍女", age=20, salary=8000, dep_id=2, province="河北")
g.添加完畢後,寫查詢代碼,啓動程序
h.多對多添加數據的例子:
book = models.Book.objects.filter(title="葵花寶典").first()ling = models.Author.objects.filter(name='令狐沖').first()xing = models.Author.objects.filter(name='任我行').first()ying = models.Author.objects.filter(name='任盈盈').first()book.authors.add(ling.pk, xing.pk, ying.pk)