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 importmodels#Create your models here.

classbook_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)

classsite_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 importbook_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 inlist: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的区别

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐