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 
  • 相关阅读:
    Elasticsearch的介绍与安装配置启动问题
    代码发布项目
    gitpython模块
    Paramiko模块
    gojs插件的介绍与使用
    django中如何实现websocket,真正通过websocket实现群聊功能
    如何实现服务端主动给客户端推送消息,websocket详解,以及django如何使用websocket问题
    简单爬取汽车之家新闻(requests模块+bs4)
    http协议版本,响应状态码,正反向代理的区别,与伪静态
    web开发经验——富头像上传编辑器的使用
  • 原文地址:https://www.cnblogs.com/qican/p/12098553.html
Copyright © 2011-2022 走看看