单表操作: 一 项目的操作顺序: 1 在model.py文件中创建表结构 class Book(models.Model): id=models.AutoField(primary_key=True) title=models.CharField(max_length=32) price=models.DecimalField(max_digits=5,decimal_places=2) publish=models.CharField(max_length=32) pub_date=models.DateTimeField() 2 连接数据库创建表 (1)先创建数据库bms (2)配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME':'bms', # 要连接的数据库,连接前需要创建好 'USER':'root', # 连接数据库的用户名 'PASSWORD':'', # 连接数据库的密码 'HOST':'127.0.0.1', # 连接主机,默认本级 'PORT':3306 # 端口 默认3306 } }
DATABASES = {'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'bms',# 要连接的数据库,连接前需要创建好'USER': 'root',# 连接数据库的用户名'PASSWORD': '',# 连接数据库的密码'HOST': '127.0.0.1', # 连接主机,默认本级'PORT':3306# 端口 默认3306}, 'app1': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'bms',# 要连接的数据库,连接前需要创建好'USER': 'root',# 连接数据库的用户名'PASSWORD': '',# 连接数据库的密码'HOST': '127.0.0.1', # 连接主机,默认本级'PORT':3306# 端口 默认3306}, 'app2': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'bms',# 要连接的数据库,连接前需要创建好'USER': 'root',# 连接数据库的用户名'PASSWORD': '',# 连接数据库的密码'HOST': '127.0.0.1', # 连接主机,默认本级'PORT':3306# 端口 默认3306}}
(3)数据库迁移 python manage.py makemigrations python manage.py migrate KEY: Django在执行迁移命令时只会为settings中install_app中的应用中的models创建表结构 3 启动项目: python manage.py runserver 二 表记录操作 (1) 添加记录 # 方式1 book=Book(title="",price="",publish="",pub_date="2012-12-12") book.save() # 方式2 book=Book.objects.create(title="",price="",publish="",pub_date="2012-12-12") print(book.id) print(book.title) (2) 查询记录 KEY:queryset数据类型 Book.objects.all() # 返回queryset对象 [obj,obj2,obj3,...] Book.objects.all()first() # Book模型类对象 Book.objects.all().last() # Book模型类对象 Book.objects.filter(title="python") # 返回queryset对象 [obj,obj2,obj3,...] Book.objects.get(title="python") # Book模型类对象 Book.objects.exclude(title="python") # 返回queryset对象 [obj,obj2,obj3,...] Book.objects.all().count() # 返回int Book.objects.all().order_by("-price")# 返回queryset对象 Book.objects.all().order_by("-price").reverse() # 返回queryset对象 Book.objects.all().exist() # 返回布尔值 Book.objects.all().values("title") # 返回queryset对象 [{"title":""},{"title":""}] Book.objects.all().values_list("title","price") # 返回queryset对象 [("python",122),("linux",233)] Book.objects.all().values("price").distinct() 模糊查询: Book.objects.filter(price__gt=100) Book.objects.filter(price__lt=100) Book.objects.filter(price__in=[100,200,300]) Book.objects.filter(price__range=[100,200]) Book.objects.filter(title__startswith="py") Book.objects.filter(title__contains="py") Book.objects.filter(title__icontains="py") Book.objects.filter(pub_date__year="2012") (3) 删除 Book.objects.all().delete() Book.objects.get(id=1).delete() (4) 更新 Book.objects.filter(id__gt=5).update(price=100) 例子: 1 查询老男孩出版社出版过的价格大于200的书籍 Book.objects.filter(price__gt=200,publish="老男孩出版社") 2 查询2017年8月出版的所有以py开头的书籍名称 Book.objects.filter(title__startswith="py",pub_date__year=2017,pub_date__month=8).values("title") 3 查询价格为50,100或者150的所有书籍名称及其出版社名称 Book.objects.filter(price__in=[50,100,150]).values("title","publish") 4 查询价格在100到200之间的所有书籍名称及其价格 Book.objects.filter(price__range=[100,200]).values("title","price") 5 查询所有人民出版社出版的书籍的价格(从高到低排序,去重) Book.objects.filter(publish="人民出版社").order_by("-price").values("price").distinct()
单表查询连接数据库具体步骤:
1.创建表,在app model.py文件中,创建
2.数据库中,先创建好库,命名为bms
3.配置settings
4.确保配置文件中已经配置好了自己的应用
5.app 应用中,__init__.py 文件中加上:
import
pymysql
pymysql.install_as_MySQLdb()
6.执行
python manage.py makemigrations
python manage.py migrate
7.可能出现的问题和解决办法