1.工程下創建APP(以WIN10+PYTHON3.6爲例)python
C:\Users\WYS>django-admin startproject myweb #創建項目 C:\Users\WYS>cd myweb C:\Users\WYS\myweb>django-admin startapp myapp #創建項目下屬APP
2.APP下的models.py文件中加入表結構(django中之因此把表結構在自身文件中定義,是爲了在其餘文件中可直接引用表結構進行數據庫操做,不用頻繁刷新數據表獲取表結構)mysql
from django.db import models # Create your models here. class book_info(models.Model): fromuser = models.CharField(max_length=30, default='WYS') fromsite = models.CharField(max_length=50) bookname = models.CharField(max_length=50) #updatetime = models.DateTimeField() #lastchapter = models.CharField(max_length=100) class site_info(models.Model): sitename = models.CharField(max_length=50) bookname = models.CharField(max_length=50) url = models.CharField(max_length=200) updatetime = models.DateTimeField() lastchapter = models.CharField(max_length=100)
3.在myweb/myweb/settings.py中加入建立的APP和MYSQL鏈接信息web
INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'myapp', )
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'test', 'USER': 'test', 'PASSWORD': 'test', 'HOST': 'localhost', 'PORT': '3306', } }
4.將models.py中的數據庫表結構同步到MYSQL中sql
C:\Users\WYS\myweb>python manage.py migrate #建立表結構 C:\Users\WYS\myweb>python manage.py makemigrations myapp #告訴django,myapp中的表結構有更新 C:\Users\WYS\myweb>python manage.py migrate myapp #執行myapp中的表結構到mysql中
數據庫中的表名爲myapp_book_info,myapp_site_info,但django代碼中調用時的表名爲models.py中定義的表名book_info,site_info數據庫
5.數據表操做-增django
from myapp.models import book_info test1 = book_info(fromuser='testuser',fromsite='testsite',bookname='testbookname') test1.save()
book_info.objects.create(fromuser='testuser',fromsite='testsite',bookname='testbookname')
6.數據庫操做-刪session
test1 = book_info.objects.get(bookname='testbookname') test1.delete()
book_info.objects.filter(bookname='testbookname').delete() book_info.objects.all().delete()
7.數據庫操做-改app
test1 = book_info.objects.get(bookname='testbookname') test1.bookname = 'book1' test1.fromuser = 'user1' test1.save
book_info.objects.filter(bookname='testbookname').update(fromuser='user1') book_info.objects.all().update(fromuser='user1')
8.數據庫操做-查url
list = book_info.objects.all() for i in list: print(i.book_name)
list = book_info.objects.filter(bookname='testbookname', fromuser='testuser') #相似於SQL中的WHERE
list = book_info.objects.filter( fromuser__contains='testuser') #注意中間是雙下劃線,相似於SQL中的where fromuser like "%testuser%" #此外還有icontains(大小寫無關的like),startswith和endswith, 還有range(SQL BETWEEN查詢)
list = book_info.objects.get(bookname='testbookname') #返回單條記錄,不須要for直接list.bookname使用
list = book_info.objects.filter().exclude().filter() #可無限嵌套
book_info.object.all()[:5] #前5條記錄 book_info.object.order_by(bookname)[2:5] #排序後的第三、四、5條記錄 book_info.object.order_by(bookname)[0] #排序後的第1條記錄 book_info.object.order_by(bookname)[0:1].get() #排序後的第1條記錄 book_info.object.all()[:10:2] #從第1條記錄到第11條記錄步長爲2的數據集
__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 __isnull=True 與 __exact=None的區別