zoukankan      html  css  js  c++  java
  • Django---Django通过ORM连接数据库

      前面介绍了Django平台的数据交互,这些数据都是在本地存放着,修改内容或者重新启动服务,数据就消失了,如果我们把数据存放在数据库中,不就保存了吗?

    ORM

    在写Django数据库之间,我们首先了解下什么是ORM,ORM就是对象关系映射,是通过使用描述对象和数据库之间映射的元数据,将面向对象语言程序中的对象自动持久化到关系数据库中。本质上就是将数据从一种形式转换到另外一种形式。 (百度百科)

    说这么多,不知道大家理解不理解,其实就是通过实例对象的方法帮助我们写sql语句从而方便我们。(其实就是通过你写的代码,然后帮你写SQL语句)

    其实我们今天所写的Django的数据库其实就是通过ORM来实现的。

    Django数据库

    Django中自带的也有数据库(sqlite3),自带的轻量级数据库sqlite3,已经完全够了,当然大家都很数据Mysql数据库,我们也可以通过Django连接Mysql数据库

    连接Mysql数据库

    在文件settings,py文件下中找到以下配置信息,该信息为连接默认数据库(sqlite3)

    # 连接数据库
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        }
    }

    如果想要连接Mysql数据库,我们可以进行修改成以下参数

    # 配置MYsql数据库
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'test', # 数据库名称,
            'HOST': 'localhost', # 主机地址
            'USER': 'root', # 数据库用户
            'PASSWORD': '821006052', # 密码
            'PORT': 3306 # mysql的端口默认3306
        }
    }

    数据库已经连接成功了。但是还需要安装mysql插件mysqlclient

     pip install mysqlclient 

    操作数据库

    在文件models.py下创建表名以及表字段

    # model.py

    #
    创建表名已经表字段 from django.db import models # class名代表表名,models.Model固定写法 class User(models.Model): # username,password 表示创建字段名,长度为32 username = models.CharField(max_length=32) password = models.CharField(max_length=32)

    打开cmd,跳转到项目目录下执行以下命令,同步数据库

    # 同步数据库
    python manage.py makemigrations

    这个时候会看到项目中的migrations中自动生成了一个文件 0001_initial.py, 这个时候我们继续执行命令

    # 创建数据库表
    python manage.py migrate

    这个时候我们都已经把数据库全部创建完成了。

    这个时候会创建一些Django自带的表,如果不需要的话我们可以在sttings.py文件中进行进行屏幕

    INSTALLED_APPS = [
        'django.contrib.admin',    # admin管理后台站点
        'django.contrib.auth',    # 身份认证系统
        'django.contrib.contenttypes',   # 内容类型框架 
        'django.contrib.sessions',    # 会话框架
        'django.contrib.messages',    # 消息框架
        'django.contrib.staticfiles',    # 静态文件管理框架
        'Djtest',    # 项目应用
    ]

    migrations

     创建好后数据库,你会发现Django项目中重新创建了一个文件migrations,里面的内容就是数据库的一些操作

    注:

    如果一不小心删除了migrations文件的数据,那么怎么办?

    1、删除migrations下除了__int__.py的文件

    2、重新执行同步数据库的命令

    # 同步数据库
    python manage.py makemigrations
    
    # 创建数据库
    python manage.py migrate
    
    

    添加数据到数据库

    前面工作已经全部完成了,我们直接开始编写代码写入数据库中,这里还是使用上一篇数据交互的代码完成。我们直接在视图中进行修改代码

    # views.py
    
    def index(request):
        if  request.method == 'POST':
            username = request.POST.get('username')
            password = request.POST.get('password')
            # 将数据保存到数据库
            models.User.objects.create(username=username,password=password)

      return render(request, 'index.html', {'data':username})

    这个地方需要注意前面写的html接收的内容,然后再返回给用户浏览器,这里修改了index.html文件

    # index.html
    <
    html> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <head> <title>安静博客乐园</title> </head> <body> <center> <li>欢迎您, <tbody> <tr> <td>{{data}}</td> </tr> </tbody> </li> </center> </ul> </body> </html>

    最后工作了,启动Django服务,进入到对应的地址,输入用户名和密码,点击提交

    提交过后,来到我们的数据库中,进行查看,数据是否提交(我这里输入多次不同的数据)

    可以发现数据已经全部都存到数据库中了。这样就可以把提交过的数据全部都保存在数据库中,然而不会重启服务器导致数据丢失了

    其他数据库连接信息配置

    # 连接 PostgreSQL
    django.db.backends.postgresql 
    # 连接 mysql
    django.db.backends.mysql 
    # 连接 sqlite
    django.db.backends.sqlite3 
    # 连接 oracle
    django.db.backends.oracle 
  • 相关阅读:
    PAT B1027 打印沙漏 (20 分)
    PAT B1025 反转链表 (25 分)
    PAT B1022 D进制的A+B (20 分)
    PAT B1018 锤子剪刀布 (20 分)
    PAT B1017 A除以B (20 分)
    PAT B1015 德才论 (25 分)
    PAT B1013 数素数 (20 分)
    PAT B1010 一元多项式求导 (25 分)
    HDU 1405 The Last Practice
    HDU 1165 Eddy's research II
  • 原文地址:https://www.cnblogs.com/qican/p/12098553.html
Copyright © 2011-2022 走看看