设计表

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',
    }
}
settings.py

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即可查看查询语句

 

posted on 2019-09-19 16:43  我只想你  阅读(129)  评论(0编辑  收藏  举报