rs=Person.objects.all() all返回的是QuerySet對象,程序並無真的在數據庫中執行SQL語句查詢數據,但支持迭代,使用for循環能夠獲取數據。 print rs.query 會打印出原生sql語句 rs=Person.objects.get(id='1') get返回的是Model對象,類型爲列表,說明使用get方法會直接執行sql語句獲取數據 可是,若是數據庫沒有數據或存在相同數據時,使用get方法會出錯。 Person.objects.filter() filter和get相似,但支持更強大的查詢功能,而且返回的數據爲對象集合,get只返回單個對象。
常常出現 'ascii' codec can't encode characters in position 8-50: ordinal not in range(128) 錯誤python
解決辦法:sql
在python的Lib\site-packages文件夾下新建一個sitecustomize.py,內容爲:數據庫
Python代碼 ide
# encoding=utf8 spa
import sys code
reload(sys) orm
sys.setdefaultencoding('utf8') sqlite
filter表示=,exclude表示!=。
querySet.distinct() 去重複
__exact 精確等於 like 'aaa'
__iexact 精確等於 忽略大小寫 ilike 'aaa'
__contains 包含 like '%aaa%'
__icontains 包含 忽略大小寫 ilike '%aaa%',可是對於sqlite來講,contains的做用效果等同於icontains。
__gt 大於
__gte 大於等於
__lt 小於
__lte 小於等於
__in 存在於一個list範圍內
__startswith 以...開頭
__istartswith 以...開頭 忽略大小寫
__endswith 以...結尾
__iendswith 以...結尾,忽略大小寫
__range 在...範圍內
__year 日期字段的年份
__month 日期字段的月份
__day 日期字段的日
__isnull=True/False對象