首页 > Python资料 博客日记
ORM基础
2024-05-20 00:30:02Python资料围观161次
本篇文章分享ORM基础,对你有帮助的话记得收藏一下,看Python资料网收获更多编程知识
ORM(Object Relational Mapping)是对象-关系-映射的简称。
ORM是MVC框架中的重要的部分。它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员的工作量
在ORM中,有三种对应关系:
- 类对应表
- 类属性对应表字段
- 类对象对应表记录
如何在Django中使用ORM
-
1.创建对象映射关系,即创建模型类,其实就是在app下的models.py中,以类和属性的形式定义表的字段
models.pyfrom django.db import models class User(models.Model): username = models.CharField(max_length=32, verbose_name='用户名') # 当输出对象时候自动输出相应对象(记录)的用户名【纯是输出对象为了好看哈哈哈】 def __str__(self): return self.username
-
2.配置数据库连接,并且有了关系映射关系,这个时候就可以通过命令在数据库中生成具体表了
db.sqlite3配置
dj.sqlite3是django中的集成数据库,在settings中配置好的,适合测试环境用【适用于数据量小的时候】DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / 'db.sqlite3', } }
mysql配置
首先安装用于连接mysql的模块pip install pymysql
然后添加配置,在与项目同名目录中的__init__.py添加以下代码
import pymysql pymysql.install_as_MySQLdb()
接下来,就需要手动在mysql中手动创建数据库啦
然后,连接mysql还需要再Django中的settings中配置一下DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'day07', #你的数据库名称 'USER': 'root', #你的数据库用户名 'PASSWORD': '123', #你的数据库密码 'HOST': '', #你的数据库主机,留空默认为localhost 'PORT': '3306', #你的数据库端口 } }
由于ORM会将ORM语句转换成原生sql语句,可能有些SQL不符合我们的预期,所以这个日志配置,用来查看 ORM到底将语句转换成什么,方便我们排查
如果想查看ORM转换为的sql语句,可以在settings中配置
LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'console':{ 'level':'DEBUG', 'class':'logging.StreamHandler', }, }, 'loggers': { 'django.db.backends': { 'handlers': ['console'], 'propagate': True, 'level':'DEBUG', }, } }
也可以为每个app单独配置数据库,可以在settings中配置
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME':'bms', # 要连接的数据库,连接前需要创建好 'USER':'root', # 连接数据库的用户名 'PASSWORD':'', # 连接数据库的密码 'HOST':'127.0.0.1', # 连接主机,默认本级 'PORT':3306 # 端口 默认3306 }, 'app01': { #可以为每个app都配置自己的数据,并且数据库还可以指定别的,也就是不一定就是mysql,也可以指定sqlite等其他的数据库 'ENGINE': 'django.db.backends.mysql', 'NAME':'bms', # 要连接的数据库,连接前需要创建好 'USER':'root', # 连接数据库的用户名 'PASSWORD':'', # 连接数据库的密码 'HOST':'127.0.0.1', # 连接主机,默认本级 'PORT':3306 # 端口 默认3306 }
}
- 3.数据库迁移,只需要执行两个命令就可以
上述命令会将所有的APP(settings中的INSTALLED_APPS中的app)中的models.py的映射类,真正的在数 据库中创建相应的表。但是也可能有失败的时候,那么我们就要强制执行数据库迁移命令:python manage.py makemigrations # 用来读取你在modesl.py中的类和属性,创建数据库的映射关系【生成文件】 python manage.py migrate # 读取映射关系文件,在数据库中生成相应的表
上述操作,仅适用于连接mysqlpython manage.py migrate your_app_name --database your_app_name
注意点- Django为了区分某个表属于某个应用,创建的表都是以应用名加下划线加表名的形式,如上述的UserInfo表,Django会创建成app01_userinfo
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python与PyTorch的版本对应
- Anaconda版本和Python版本对应关系(持续更新...)
- Python pyinstaller打包exe最完整教程
- Windows上安装 Python 环境并配置环境变量 (超详细教程)