设计表
django之orm详解:
https://www.cnblogs.com/komorebi/p/11551089.html
在django中设计表
1.先在navicat中建好一个库
2.更改django配置中的DATABASES
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'day55', 'USER':'root', 'PASSWORD':'123', 'HOST':'127.0.0.1', 'POST':3306, 'CHARSET':'utf8', } }
3.在创建项目中的文件下的migrations文件夹下,找到__init__.py
import pymysql pymysql.install_as_MySQLdb()
4.去models文件中创建表
from django.db import models # Create your models here. class Book(models.Model): title = models.CharField(max_length=255) price = models.DecimalField(max_digits=8,decimal_places=2) publish_data = models.DateField(auto_now_add=True) publish = models.ForeignKey(to='Publish') # 默认是跟publish的主键字段做的一对多外键关联 authors = models.ManyToManyField(to='Author') # 虚拟字段 1.自动创建第三表 2.棒orm跨表查询 class Publish(models.Model): name = models.CharField(max_length=32) addr = models.CharField(max_length=32) class Author(models.Model): name = models.CharField(max_length=64) age = models.IntegerField() author_detail = models.OneToOneField(to='AuthorDetail') class AuthorDetail(models.Model): phone = models.BigIntegerField() addr = models.CharField(max_length=64)
5.写数据库迁移命令
之后就开始填写数据,制作测试脚本
from django.test import TestCase # Create your tests here. import os if __name__ == "__main__": os.environ.setdefault("DJANGO_SETTINGS_MODULE", "day55.settings") import django django.setup() """ 写针对某一个.py文件的测试代码 """
from app01 import models
增
# publish_id 实际字段传数字 models.Book.objects.create(title='围城里的男人',price=166.3,publish_data='2016-03-15',publish_id=1) # publish 虚拟字段直接传对象 pk 主键 publish_obj = models.Publish.objects.filter(pk=1).first() models.Book.objects.create(title='红玫瑰',price=5555,publish=publish_obj)
改
# 改 将id=5 的书的作者id改为4 # 传数字 models.Book.objects.filter(pk=5).update(publish=4)
# 传对象 改为3 publish_obj = models.Publish.objects.filter(pk=3).first() # print(publish_obj) models.Book.objects.filter(pk=5).update(publish=publish_obj)
双下滑查询
查看orm内部sql语句的方法有哪些
1.如果是queryset对象 那么可以点query直接查看该queryset的内部sql语句
2.在django项目的配置文件中 配置一下参数即可实现所有的orm在查询的时候自动打印对应的sql语句
LOGGING = { 'version': 1, 'disable_existing_loggers': False, handlers': { 'console':{ 'level':'DEBUG', 'class':'logging.StreamHandler', }, }, 'loggers': { 'django.db.backends': { 'handlers': ['console'], 'propagate': True, 'level':'DEBUG', }, } }
配置好之后,再执行任何对数据库进行操作的语句时,会自动将Django执行的sql语句打印到pycharm终端上
除了配置外,还可以通过一点.query即可查看查询语句