• orm


    1. ORM

    定义:object relations mapping,对象关系映射。它实现了数据模型与数据库的解耦

    当models里的内容发生改变时,每改变一次执行一次下边的两行代码

    python manage.py makemigrations #只是生成一个操作记录,类似logging日志

    python manage.py migrate #在数据库中进行正正的操作,建表,删表等

    python manage.py makemigrations

    python manage.py migrate

    没有设置时,执行连接Django自带的数据库,sqllite3

    mysqldb 不支持python3.4以上版本

    执行包文件init文件

    django 连接mysql
    1 settings配置文件中
    	DATABASES = {
            'default': {
                'ENGINE': 'django.db.backends.mysql',
                'NAME': 'orm02',
                'USER':'root',
                'PASSWORD':'666',
                'HOST':'127.0.0.1',
                'PORT':3306,
            }
        }
    2 项目文件夹下的init文件中写上下面内容,用pymysql替换mysqldb
    	import pymysql
    	pymysql.install_as_MySQLdb()
    
    3 models文件中创建一个类
    
    # class UserInfo(models.Model):
    #     id = models.AutoField(primary_key=True)
    #     name = models.CharField(max_length=10)
    #     bday = models.DateField()
    #     checked = models.BooleanField()
    4 执行数据库同步指令
    # python manage.py makemigrations
    # python manage.py migrate
    
    5 创建记录(实例一个对象,调用save方法)
    def query(request):
        # 创建一条记录,增
    
        new_obj = models.UserInfo(
            id=2,
            name='子文',
            bday='2019-09-27',
            checked=1,
        )
        new_obj.save()  #翻译成sql语句,然后调用pymysql,发送给服务端  insert into app01_userinfo values(2,'子文','2019-09-27',1)
    
        return HttpResponse('xxx')
    

    1. ORM

    定义:object relations mapping,对象关系映射。它实现了数据模型与数据库的解耦

    每个数据库有自己的sql语句,不通用。

    1.将对象翻译成sql语句

    2.Django内置的一个pymysql客户端将sql语句发送给mysql服务端

    3.服务端拿到sql,到磁盘里面进行数据操作

    Django默认数据库为sqlite3,比较鸡肋,设置为mysql数据库修改settings配置文件

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',  #Django中数据库地址
            'NAME':'bms',           # 要连接的数据库名,连接前先cmd建库
            'USER':'root',        # 连接数据库的用户名
            'PASSWORD':'',        # 连接数据库的密码
            'HOST':'127.0.0.1',       # 连接主机,默认本级
            'PORT':3306,            #  端口 默认3306
        }
    }
    

    如有必要,可以为自己的项目下的 app 配置单独的数据库,如下代码

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME':'bms',           # 要连接的数据库,连接前需要创建好
            'USER':'root',        # 连接数据库的用户名
            'PASSWORD':'',        # 连接数据库的密码
            'HOST':'127.0.0.1',       # 连接主机,默认本级
            'PORT':3306            #  端口 默认3306
        },
        'app01': { #可以为每个app都配置自己的数据,并且数据库还可以指定别的,也就是不一定就是mysql,也可以指定sqlite等其他的数据库
            'ENGINE': 'django.db.backends.mysql',
            'NAME':'bms',           # 要连接的数据库,连接前需要创建好
            'USER':'root',        # 连接数据库的用户名
            'PASSWORD':'',        # 连接数据库的密码
            'HOST':'127.0.0.1',       # 连接主机,默认本级
            'PORT':3306            #  端口 默认3306
        }
    }
    

    设置完后,再启动我们的Django项目前,我们需要激活我们的mysql。然后,启动项目,会报错:no module named MySQLdb 。

    这是因为django默认你导入的驱动是MySQLdb,可是MySQLdb 不支持python3.4以上版本,所以我们需要的驱动是PyMySQL 所以,我们只需要找到项目名文件下的__init__,执行替换命令

    import pymysql
    pymysql.install_as_MySQLdb()
    

    cmd终端创建数据库,并在pycharm下创建类

    3 models文件中创建一个类
    
    # class UserInfo(models.Model):
    #     id = models.AutoField(primary_key=True)
    #     name = models.CharField(max_length=10)
    #     bday = models.DateField()
    #     checked = models.BooleanField()
    

    最后通过两条数据库迁移命令即可在指定的数据库中创建表 :

    python manage.py makemigrations  
    #生成记录,每次修改了models里面的内容或者添加了新的app,新的app里面写了models里面的内容,类似于logging
    python manage.py migrate         
    #执行上面这个语句的记录来创建表,生成的表名字前面会自带应用的名字,例如:你的book表在mysql里面叫做app01_book表
    

    数据库查看创建的表show tables; desc app02_a; (app名 下划线 类名)

    pycharm查看数据库

    ![

    ![

    通过界面实现增删改查,每次操作后上传

    通过代码实现增删改查

    #设置主键相同时,新增数据覆盖原有的数据
    
  • 相关阅读:
    使用基于关系的选择器和伪类选择器创建纯CSS无JavaScript的鼠标移动到上面即可显示的下拉菜单
    git学习教程
    笔记
    luogu P1429 平面最近点对(加强版)
    可持久化数据结构
    luogu P4137 Rmq Problem / mex
    置换群(Burnside引理+Polya定理)
    luogu P1053 篝火晚会
    luogu P3238 [HNOI2014]道路堵塞
    luogu P3812 【模板】线性基
  • 原文地址:https://www.cnblogs.com/lvweihe/p/11662786.html
Copyright © 2020-2023  润新知