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的Lib\site-packages文件夾下新建一個sitecustomize.py,內容爲:

Python代碼    

  1. # encoding=utf8  

  2. import sys  

  3. reload(sys)  

  4. sys.setdefaultencoding('utf8')   


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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章