1. 手动创建数据库

2. 在settings.py里面配置一下数据库的连接信息(告诉Django连接哪一个数据库)

DATABASES = {

'default': {

'ENGINE': 'django.db.backends.mysql', # 连接数据库的类型

'NAME': 'day62xiawu', # 数据库名字

'HOST': '127.0.0.1', # IP

'PORT': 3306, # 端口

'USER': 'root', # 用户名

'PASSWORD': '123456', # 密码

}

}

3. 在和settings.py同目录下的__init__.py文件中,告诉Django用pymysql代替MySQLdb来连接数据库

import pymysql

pymysql.install_as_MySQLdb()

4. 在app/models.py中,定义类,类一定要继承models.Model

class Book(models.Model):

id = models.AutoField(primary_key=True)

title = models.CharField(max_length=32)

5. 执行两条命令

1. 在哪儿执行?

在项目的根目录(有manage.py文件的那个目录)

2. 命令

python manage.py makemigrations --> 将models.py文件中的改动记录在小本本(app/migrations/00xx_****.py)上

python manage.py migrate --> 将改动翻译成SQL语句,去数据库中执行

2. 表和表之间的关系

1. 一对多(出版社和书)

publisher = models.ForeignKey(to="Publisher")

在数据库中:

有没有publisher这个字段?

数据库中实际 生成的是一个 publisher_id 字段

2. 多对多(作者和书)

books = models.ManyToManyField(to="Book")

在数据库中:

是通过第三张表建立的关系

3. 增删改查操作

1. 单表增删改查

增:

models.Publisher.objects.create(name="沙河出版社")

查:

models.Publisher.objects.get(id=1)

models.Publisher.objects.get(name="沙河出版社")

删:

models.Publisher.objects.get(id=1).delete()

改:

obj = models.Publisher.objects.get(id=1)

obj.name = "沙河第二出版社"

obj.save()

2. 外键的增删改查

增、删、查同上

book_obj = models.Book.objects.get(id=1)

book_obj.publisher 是什么? *****

和我这本书关联的出版社对象

book_obj.publisher.id 和我这本书关联的出版社的id值

book_obj.publisher.name 和我这本书关联的出版社的名称

book_obj.publisher_id 是什么?

和我这本书关联的出版社的id值

3. 多对多操作

1. 查id为1的作者都写过的书?

author_obj = models.Author.objects.get(id=1)

author_obj.books.all() --> 和我这个作者关联的所有书对象

2. 想给作者绑定多本书?

author_obj = models.Author.objects.get(id=1)

author_obj.books.set([1,2,3]) --> 把id是1、2、3的书和我这个作者关联上

orm连接mysql_Django项目如何使用ORM连接MySQL相关推荐

  1. pom 导入mysql连接,maven项目中的jdbc连接步骤

    在maven项目pom.xml中到入驱动包(以下是驱动包代码) mysql mysql-connector-java 8.0.15 导入成功会看到Maven Dependencies下有个mysql- ...

  2. git常用命令,项目删除原有github连接并重新连接,回滚,下拉分支代码,切换分支

    下拉分支代码 $ git clone https://gitea.https.xiaozhuschool.com/APKDevelopment/YouYuanSellingWineMachine.gi ...

  3. Remix连接本地项目(Solidity)

    在做项目当中很多人都是用到网页版得Remix,但是Remix网页版得代码都是存在缓存内存当中,很容易就会丢失自己得代码,所以需要从本地把项目connect 起来使用,这样有效得防止代码得丢失等,也方便 ...

  4. Eclipse开发项目,“猥皮恩“连接,发布到现场

    Eclipse开发项目,通过vpn部署到现场环境 1.找到eclipse运行项目的.class文件 2.vpn连接甲方提供的IP地址 3.编译文件上传 4.重启服务 5.对数据库表作修改 1.找到ec ...

  5. android项目监听蓝牙连接,android 蓝牙ACL通讯详解

    本文主要是讲述android中蓝牙ACL链接的详细介绍,这里只讲述ACL,不讨论BLE,SCO,等等其他通讯通道,后面如果我有兴趣研究,我会贴上对应的文章链接 github下载地址 同时也是一个可直接 ...

  6. C#基础系列:实现自己的ORM(反射以及Attribute在ORM中的应用)

    反射以及Attribute在ORM中的应用 一. 反射 什么是反射? 简单点吧,反射就是在运行时动态获取对象信息的方法,比如运行时知道对象有哪些属性,方法,委托等等等等. 反射有什么用呢? 反射不但让 ...

  7. ORM框架如何选型——各大ORM框架比较

                                             ORM框架如何选型--各大ORM框架比较 现有ORM框架或ORM相关框架主要有Hibernate,Mybatis.这两 ...

  8. SQL Server 2005 连接本地端口1433开启远程连接/登陆18456错误的解决方法

    SQL Server 2005 连接本地端口1433开启远程连接/登陆18456错误的解决方法 出处:http://jimmyli.blog.51cto.com/我站在巨人肩膀上Jimmy Li 作者 ...

  9. android连接usb外设通讯_iOS App连接外设的几种方式

    一般iOS开发者做APP开发大部分时候都是通过Http(s)请求跟后台服务器打交道,做一些信息展示和用户交互.很少涉及到去跟外部硬件设备连接的开发.随着近年来车联网和物联网的兴起,智能家居和智能硬件的 ...

最新文章

  1. Solaris下访问windows共享资源
  2. python flask 设置个性化的响应体 响应头 状态码
  3. linux 查看磁盘空间 文件 文件夹 大小
  4. net-snmp交叉编译出现 undefined reference to dlopen,dlsym,dlclose错误
  5. 【JUC系列】Future异步回调模式
  6. python模拟app抢票_python并发编程多进程 模拟抢票实现过程
  7. yarn oom问题一例
  8. 【java】线程的简单使用以及注意的问题
  9. C语言的数据类型→字符型数据
  10. 详述GPS原理及RTK技术应用
  11. 张朝阳5G寻路与搜狐奇兵
  12. Python——数学运算函数
  13. 在Linux如何搭建Oracle11g Data Guard
  14. SQLZOO练习题(3)
  15. Windows系统路径中的C:/WINDOWS/Explorer.exe是什么?
  16. 呼唤IT企业的个人英雄主义
  17. docker学习(四) 配置阿里云镜像加速器
  18. 百度浏览器Android6.0,有些安卓机型百度浏览器h5唤起app失效
  19. python 通信系统仿真_深入浅出通信原理连载22-40(Python代码版)
  20. 学习笔记 | 深度森林 Deep Forest

热门文章

  1. leetcode 3. Longest Substring Without Repeating Characters 最长非重复子串的长度 滑动窗口法
  2. 独家 | TensorFlow 2.0将把Eager Execution变为默认执行模式,你该转向动态计算图了...
  3. PyTorch在NLP任务中使用预训练词向量
  4. LeetCode简单题之二进制矩阵中的特殊位置
  5. 来谈谈Servlet~~
  6. MegEngine推理性能优化
  7. Yolov1目标检测算法详细分析
  8. Android CheckBox 点击的时候没有效果
  9. 微信小程序下拉刷新和上拉加载
  10. react组件回顶部