前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django进阶-1-ORM操作

Django进阶-1-ORM操作

作者头像
小团子
发布2019-07-18 15:53:57
4620
发布2019-07-18 15:53:57
举报
文章被收录于专栏:数据云团

Django 框架功能齐全自带数据库操作功能。当程序涉及到数据库相关操作时:

  • 创建数据库,设计表结构和字段;
  • 使用 MySQLdb 或是 SQLite 来连接数据库,并编写数据访问层代码;
  • 业务逻辑层去调用数据访问层执行数据操作。

关系对象映射(ORM),在 Django 中,根据代码中的类自动生成数据库的表。

类名对应 ---> 数据库中的表名

类属性对应 ---> 数据库里的字段

类实例对应 ---> 数据库表里的一行数据

obj.id obj.name ... 类实例对象的属性

Django 的 orm 操作本质上会根据对接的数据库引擎,翻译成对应的 sql 语句;所有使用 Django 开发的项目无需关心程序底层使用的是 Mysql、Oracle、sqlite...,如果数据库迁移,只需要更换 Django 的数据库引擎即可。

mysql 的 pymysql 数据库引擎:

一、 Django 连接 Mysql

① 创建数据库

Django 自带的 orm 是 data_first 类型的 ORM,使用前必须先创建数据库。

代码语言:javascript
复制
create database shujuyuntuan default character set utf8 collate utf8_general_ci;

② 修改 项目中的 settings.py 文件中的设置,连接 Mysql 数据库。

代码语言:javascript
复制
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'shujuyuntuan',
        'USER': 'root',
        'PASSWORD': 'qwe123',
        'HOST': '127.0.0.1',
        'PORT': '3306'
    }
}

如果要 查看 orm 操作执行的原生 SQL 语句

在项目中的 settings.py 文件增加

代码语言:javascript
复制
LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console':{
            'level':'DEBUG',
            'class':'logging.StreamHandler',
        },
    },
    'loggers': {
        'django.db.backends': {
            'handlers': ['console'],
            'propagate': True,
            'level':'DEBUG',
        },
    }
}

③ 修改项目中的 __init__.py 文件,设置 Django 默认连接 Mysql 的方式

代码语言:javascript
复制
import pymysql
pymysql.install_as_MySQLdb()

④ 进行数据库迁移

在项目的 manage.py 目录下执行

代码语言:javascript
复制
python manage.py makemigrations

python manage.py migrate
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据云团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档