Python 學習筆記


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

  1. # encoding=utf8  spa

  2. import sys  code

  3. reload(sys)  orm

  4. sys.setdefaultencoding('utf8')   sqlite


QuerySet其餘字段含義

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對象

相關文章
相關標籤/搜索