django+mysql簡單總結


1.工程下建立APP(以WIN10+PYTHON3.6為例)

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中之所以把表結構在自身文件中定義,是為了在其他文件中可直接引用表結構進行數據庫操作,不用頻繁刷新數據表獲取表結構)

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連接信息

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中

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.數據表操作-增

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.數據庫操作-刪

test1 = book_info.objects.get(bookname='testbookname')
test1.delete()
book_info.objects.filter(bookname='testbookname').delete()
book_info.objects.all().delete()

 

7.數據庫操作-改

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.數據庫操作-查

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]  #排序后的第3、4、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的區別

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM