orm连接mysql_Django项目如何使用ORM连接MySQL
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相关推荐
- pom 导入mysql连接,maven项目中的jdbc连接步骤
在maven项目pom.xml中到入驱动包(以下是驱动包代码) mysql mysql-connector-java 8.0.15 导入成功会看到Maven Dependencies下有个mysql- ...
- git常用命令,项目删除原有github连接并重新连接,回滚,下拉分支代码,切换分支
下拉分支代码 $ git clone https://gitea.https.xiaozhuschool.com/APKDevelopment/YouYuanSellingWineMachine.gi ...
- Remix连接本地项目(Solidity)
在做项目当中很多人都是用到网页版得Remix,但是Remix网页版得代码都是存在缓存内存当中,很容易就会丢失自己得代码,所以需要从本地把项目connect 起来使用,这样有效得防止代码得丢失等,也方便 ...
- Eclipse开发项目,“猥皮恩“连接,发布到现场
Eclipse开发项目,通过vpn部署到现场环境 1.找到eclipse运行项目的.class文件 2.vpn连接甲方提供的IP地址 3.编译文件上传 4.重启服务 5.对数据库表作修改 1.找到ec ...
- android项目监听蓝牙连接,android 蓝牙ACL通讯详解
本文主要是讲述android中蓝牙ACL链接的详细介绍,这里只讲述ACL,不讨论BLE,SCO,等等其他通讯通道,后面如果我有兴趣研究,我会贴上对应的文章链接 github下载地址 同时也是一个可直接 ...
- C#基础系列:实现自己的ORM(反射以及Attribute在ORM中的应用)
反射以及Attribute在ORM中的应用 一. 反射 什么是反射? 简单点吧,反射就是在运行时动态获取对象信息的方法,比如运行时知道对象有哪些属性,方法,委托等等等等. 反射有什么用呢? 反射不但让 ...
- ORM框架如何选型——各大ORM框架比较
ORM框架如何选型--各大ORM框架比较 现有ORM框架或ORM相关框架主要有Hibernate,Mybatis.这两 ...
- SQL Server 2005 连接本地端口1433开启远程连接/登陆18456错误的解决方法
SQL Server 2005 连接本地端口1433开启远程连接/登陆18456错误的解决方法 出处:http://jimmyli.blog.51cto.com/我站在巨人肩膀上Jimmy Li 作者 ...
- android连接usb外设通讯_iOS App连接外设的几种方式
一般iOS开发者做APP开发大部分时候都是通过Http(s)请求跟后台服务器打交道,做一些信息展示和用户交互.很少涉及到去跟外部硬件设备连接的开发.随着近年来车联网和物联网的兴起,智能家居和智能硬件的 ...
最新文章
- Solaris下访问windows共享资源
- python flask 设置个性化的响应体 响应头 状态码
- linux 查看磁盘空间 文件 文件夹 大小
- net-snmp交叉编译出现 undefined reference to dlopen,dlsym,dlclose错误
- 【JUC系列】Future异步回调模式
- python模拟app抢票_python并发编程多进程 模拟抢票实现过程
- yarn oom问题一例
- 【java】线程的简单使用以及注意的问题
- C语言的数据类型→字符型数据
- 详述GPS原理及RTK技术应用
- 张朝阳5G寻路与搜狐奇兵
- Python——数学运算函数
- 在Linux如何搭建Oracle11g Data Guard
- SQLZOO练习题(3)
- Windows系统路径中的C:/WINDOWS/Explorer.exe是什么?
- 呼唤IT企业的个人英雄主义
- docker学习(四) 配置阿里云镜像加速器
- 百度浏览器Android6.0,有些安卓机型百度浏览器h5唤起app失效
- python 通信系统仿真_深入浅出通信原理连载22-40(Python代码版)
- 学习笔记 | 深度森林 Deep Forest
热门文章
- leetcode 3. Longest Substring Without Repeating Characters 最长非重复子串的长度 滑动窗口法
- 独家 | TensorFlow 2.0将把Eager Execution变为默认执行模式,你该转向动态计算图了...
- PyTorch在NLP任务中使用预训练词向量
- LeetCode简单题之二进制矩阵中的特殊位置
- 来谈谈Servlet~~
- MegEngine推理性能优化
- Yolov1目标检测算法详细分析
- Android CheckBox 点击的时候没有效果
- 微信小程序下拉刷新和上拉加载
- react组件回顶部