通过ORM创建数据库链接

通过ORM创建数据库链接

第一步:

  手动创建数据库      

第二步:

  配置数据库(告诉Django链接到那个数据库)

             在settings.py文件里边进行配置

                

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME':'mysite',              #数据库的库名
        'USER':'root',                 #用户名
        'PASSWORD':'123456',
        'HOST':'127.0.0.1',            #mysql数据库的IP
        'PORT':3306,                    #mysql数据库的端口
    }
}

第三步:

      在models.py文件中创建一个类

from django.db import models

# Create your models here.


# 创建User类(数据表)
class User(models.Model):
    id = models.AutoField(primary_key=True)      #自增  并设为主键
    username = models.CharField(max_length=64)    #设置变长  以及长度
    age = models.IntegerField()                    #设置整数型

    def __str__(self):
        return self.username

    class Meta:
        db_table = "user"


#创建Book类

class Book(models.Model):
    id = models.AutoField(primary_key=True)
    title = models.CharField(max_length=64,null=True)
    price = models.IntegerField()


    class Meta:
        db_table = "book"

  

from django.db import models

# Create your models here.


# 创建了一个类(类名为Class)
class Class(models.Model):
    # 设置一个ID属性   对应的是数据库里边的ID字段
    id = models.AutoField(primary_key=True)
    # 设置一个属性   对应的是数据库里边的字段
    cname = models.CharField(max_length=32)

    # 第一步   类和属性创建完成后执行makemigrations,  makemigrations作为创建数据库表的登记
    # 第二步    migrate  完成数据库表的创建
    def __str__(self):        
        self.cname
#这个__str__的作用是美化打印出来的结果,使人类更方便查看。看下面例子,如果没有__st__方法,打印的结果是<__main__.Test object at 0x0000022D6D1387B8>格式,
#有了__str__方法后,打印时会按照__str__定义的格式来打印,打印结果为Name:xiaoming。

# 学生列表开始 class Student(models.Model): id = models.AutoField(primary_key=True) sname = models.CharField(max_length=16) # 通过外键来实现夸表查询 cid = models.ForeignKey(to="Class",to_field="id",related_name="students",on_delete=models.CASCADE) # 通过ORM内置语法把学生列表跟详细列表做一对一关联 detail = models.OneToOneField("StudentDetail",null=True,on_delete=models.CASCADE) #新建一个学生详细信息 class StudentDetail(models.Model): height = models.PositiveIntegerField() email = models.EmailField() memo = models.CharField(max_length=128,null=True)

  

第四步:

     告诉Django用pymysql代替默认的MySQLdb:
在主项目的__int__.py进行操作

# 引入pymysql
import pymysql

# 用mysql作为我们的主数据库
pymysql.install_as_MySQLdb()

 

第五步:

                    发命令:

第一步   类和属性创建完成后执行makemigrations, makemigrations作为创建数据库表的登记

第二步 migrate 完成数据库表的创建

 

总结 

  

五个步骤,四部分

                                                        models.py --> Django翻译 -->pymysql -->MySQL (四部分)

原文地址:https://www.cnblogs.com/mainstream/p/10988494.html