Django 4.2.7 ORM 连接MySQLServer 完成单表CRUD

这篇具有很好参考价值的文章主要介绍了Django 4.2.7 ORM 连接MySQLServer 完成单表CRUD。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Django ORM介绍

Django 模型使用自带的 ORM。
对象关系映射(Object Relational Mapping,简称 ORM )用于实现面向对象编程语言里不同类型系统的数据之间的转换。
ORM 在业务逻辑层和数据库层之间充当了桥梁的作用。
ORM 是通过使用描述对象和数据库之间的映射的元数据,将程序中的对象自动持久化到数据库中。
Django 4.2.7 ORM 连接MySQLServer 完成单表CRUD,Django学习,django,数据库,sqlite
使用 ORM 的好处:

  • 提高开发效率。
  • 不同数据库可以平滑切换。
    使用 ORM 的缺点:
  • ORM 代码转换为 SQL 语句时,需要花费一定的时间,执行效率会有所降低。
  • 长期写 ORM 代码,会降低编写 SQL 语句的能力。
    ORM 解析过程:
  • 1、ORM 会将 Python 代码转成为 SQL 语句。
  • 2、SQL 语句通过 pymysql 传送到数据库服务端。
  • 3、在数据库中执行 SQL 语句并将结果返回。
    ORM 对应关系表:
    Django 4.2.7 ORM 连接MySQLServer 完成单表CRUD,Django学习,django,数据库,sqlite

1.使用pycharm新建一个Django项目

Django 4.2.7 ORM 连接MySQLServer 完成单表CRUD,Django学习,django,数据库,sqlite
Application name 可以不填
等到pycharm 创建虚拟环境之后,直接可以点击右上角运行 查看Django项目是否创建成功
Django 4.2.7 ORM 连接MySQLServer 完成单表CRUD,Django学习,django,数据库,sqlite
点击链接 出现以下界面就代表创建成功了
Django 4.2.7 ORM 连接MySQLServer 完成单表CRUD,Django学习,django,数据库,sqlite
注意: 如果是连接Sql Server 需要另外安装一个包 mssql-django

pip install mssql-django

Django 4.2.7 ORM 连接MySQLServer 完成单表CRUD,Django学习,django,数据库,sqlite

2.修改settings.py文件中 DATABASES

DATABASES = {
    'default': {
        'ENGINE': 'mssql',
        'NAME': 'library',  # 数据库名称
        'HOST': '127.0.0.1',  # 地址
        'PORT': '1433',  # 端口
        'USER': 'sa',  # 用户名
        'PASSWORD': '123456',  # 密码
        'OPTIONS': {
            'driver': 'ODBC Driver 17 for SQL Server',
            'MARS_Connection': True,
        },

    }
}

重新启动如果不报错,说明连接没有问题

3.创建APP

Django 规定,如果要使用模型,必须要创建一个 app。我们使用以下命令创建一个 TestModel 的 app。 starapp 后面接 app名字 pycharm默认是不创建APP的

django-admin startapp bookModel

在pycharm 底部 Terminal 输入即可,创建完成之后 会在项目下多出现一个bookModel文件夹
Django 4.2.7 ORM 连接MySQLServer 完成单表CRUD,Django学习,django,数据库,sqlite

4.创建模型

修改bookModel文件夹下的models.py 新增一个类,这个类的属性与数据表一一对应,不需要去SQLserver创建数据表,django 会帮我们创建

from django.db import models
# Create your models here.from django.db import models
class Reader(models.Model):
    name = models.CharField(max_length=100)
    reader_id = models.CharField(max_length=50, unique=True)
    password = models.CharField(max_length=100)
    address = models.CharField(max_length=200)

    def __str__(self):
        return self.name

接下来在 settings.py 中找到INSTALLED_APPS这一项,如下:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'bookModel',  #添加到这
]

在命令行中运行:

python manage.py migrate
python manage.py makemigrations bookModel  # 让 Django 知道我们在我们的模型有一些变更
python manage.py migrate bookModel   # 创建表结构

当出现以下结果 说明创建成功
Django 4.2.7 ORM 连接MySQLServer 完成单表CRUD,Django学习,django,数据库,sqlite
打开SQLserver 会发现数据库多了几张表 其中django默认增添了admin相关的表
Django 4.2.7 ORM 连接MySQLServer 完成单表CRUD,Django学习,django,数据库,sqlite
表名组成结构为:应用名_类名(如:TestModel_test)。

5.操作数据库

在目录中添加 testdb.py 文件,并修改 urls.py:

from . import testdb
urlpatterns = [
    path('admin/', admin.site.urls),
    path('testdb/', testdb.testdb),

]

在testdb.py中添加testdb 方法

def testdb(request):
    new_reader = Reader.objects.create(
        name='John Doe',
        reader_id='16',
        password='secure_password',
        address='123 Main St, City'
    )
    new_reader.save()
    return HttpResponse("<p>数据添加成功!</p>")

重启django服务器 在浏览器输入127.0.0.1:8000/testdb/
Django 4.2.7 ORM 连接MySQLServer 完成单表CRUD,Django学习,django,数据库,sqlite
查看数据库
Django 4.2.7 ORM 连接MySQLServer 完成单表CRUD,Django学习,django,数据库,sqlite
提供标准的CRUD 请根据业务需求修改文章来源地址https://www.toymoban.com/news/detail-783511.html

from django.http import HttpResponse
from django.core import serializers
from django.shortcuts import get_object_or_404

from bookModel.models import Reader


# 数据库操作def testdb(request):
    new_reader = Reader.objects.create(
        name='John Doe',        reader_id='116',        password='secure_password',        address='123 Main St, City'    )
    new_reader.save()
    return HttpResponse("<p>数据添加成功!</p>")


def selectAllReader(request):
    all_readers = Reader.objects.all()
    # 2. 将数据序列化成json格式    data = serializers.serialize('json', queryset=all_readers)
    # 3. 返回    return HttpResponse(data)


def get_reader_by_id(request, reader_id):
    # 根据read_id 查询数据    reader = Reader.objects.filter(c=reader_id).first()
    print(reader)  # 检查打印的reader对象    data = serializers.serialize('json', queryset=[reader])
    return HttpResponse(data)


def update_reader(request):
    try:
        # 获取要修改的 Reader 对象        reader = Reader.objects.get(pk=1)
        # 更新属性值        reader.name = "Marxist"        reader.save()  # 保存修改        return HttpResponse("<p>Reader对象已成功更新!</p>")
    except Reader.DoesNotExist:
        return HttpResponse("<p>未找到具有该ID的Reader对象。</p>")

def delete_reader(request):
    try:
        # 获取要删除的 Reader 对象        reader = Reader.objects.get(pk=1)
        # 删除对象        reader.delete()
        return HttpResponse("<p>Reader对象已成功删除!</p>")
    except Reader.DoesNotExist:
        return HttpResponse("<p>未找到具有该ID的Reader对象。</p>")

到了这里,关于Django 4.2.7 ORM 连接MySQLServer 完成单表CRUD的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Django模板,Django中间件,ORM操作(pymysql + SQL语句),连接池,session和cookie, 缓存

    今日概要: 模板 中间件 ORM操作(pymysql + SQL语句) session和cookie 缓存(很多种方式) 请求周期 路由系统 最基本路由关系 动态路由(含正则) 路由分发不同的app中 + include + 本质 + name + namespace 视图 类和函数(FBV和CBV) 参数 request 请求数据 自定义数据 响应 其他知识 虚拟环

    2024年02月04日
    浏览(40)
  • 使用“纯”Servlet做一个单表的CRUD操作

    @ 目录 使用“纯”Servlet做一个单表的CRUD操作 每博一文案 1. 项目说明 2. 具体对应的功能的代码实现 2.1 准备工作: 2.2 模块目录结构 2.3 工具类 DBUtil 2.4 功能一: index.html 该项目的欢迎页面如下: 2.5 功能二:部门列表 DeptListServlet 2.6 功能三:查看部门详情 DeptDetailServlet 2.7 功

    2023年04月11日
    浏览(33)
  • 如何在 Django框架下完成 websocket 连接

    Websocket 和 Socket 是两种不同的通信协议,都是用于建立网络连接的方式,但它们各有特点和适用场景。以下是它们之间的主要区别。 Websocket 双向通信: Websocket 协议可以实现客户端与服务器的双向通信,在任何时候,只要对方在线,客户端和服务器都可以主动发起通讯。 基

    2024年02月12日
    浏览(51)
  • SqlAlchemy使用教程(六) -- ORM 表间关系的定义与CRUD操作

    SqlAlchemy使用教程(一) 原理与环境搭建 SqlAlchemy使用教程(二) 入门示例及编程步骤 SqlAlchemy使用教程(三) CoreAPI访问与操作数据库详解 SqlAlchemy使用教程(四) MetaData 与 SQL Express Language 的使用 SqlAlchemy使用教程(五) ORM API 编程入门 本章内容,稍微有些复杂,建议腾出2小时空闲时间,

    2024年01月23日
    浏览(52)
  • 如何在 Django框架下完成 websocket 连接 & 在 Heroku 上部署 websocket 应用

    Websocket 和 Socket 是两种不同的通信协议,都是用于建立网络连接的方式,但它们各有特点和适用场景。以下是它们之间的主要区别。 Websocket 双向通信: Websocket 协议可以实现客户端与服务器的双向通信,在任何时候,只要对方在线,客户端和服务器都可以主动发起通讯。 基

    2024年02月12日
    浏览(46)
  • Mybatis方式完成CRUD操作

    Java开发在以前做数据库连接的时候通过JDBC来完成,非常麻烦。 现在引入了MyBatis这个框架,Mybatis是简化数据库操作的持久层框架。 使用Mybatis的好处: mybatis 可以将对数据表的操作(sql,方法)等等直接剥离,写到 xml 配置文件,实现和 java 代码的解耦 MyBatis 在 java 和 sql 之间提

    2024年02月05日
    浏览(44)
  • SpringMVC的整合完成CRUD

    目录 一.前期准备 1.1.相关依赖  1.2.配置文件 1.2.1.generatorConfig.xml  1.2.2.jdbc.properties 1.2.3. log4j2.xml 1.2.4.spring-mvc.xml 1.2.5.spring-mybatis.xml 1.2.6. spring-context.xml 二.后端代码 三.前台代码  四.功能测试 最后实战SpringMVC之CRUD就到这里,祝大家在敲代码的路上一路通畅! 感谢大家的观看

    2024年02月09日
    浏览(38)
  • 如何在MyBatis中完成ORM的映射

    当表字段于实体属性不一致时,则映射失败,值无法注入,因为orm就来解决这个问题 两个方法:设置别名与结果映射 设置别名 dao层语句 mapper语句 测试层语句 结果映射 dao层语句 mapper语句 测试层语句

    2024年02月13日
    浏览(90)
  • 【Django】Django ORM Cookbook--20230427

    英文版http://books.agiliq.com/projects/django-orm-cookbook/en/latest/ 中文版https://django-orm-cookbook-zh-cn.readthedocs.io/zh_CN/latest/query.html 相同的模型类 不同的模型类 reporter__username=‘John’ 这个和 User.objects.distinct(“first_name”).all() 不同, User.objects.distinct(“first_name”).all() 会获取遇到的不同的

    2024年02月01日
    浏览(46)
  • Django之ORM

    使用Django框架开发web应用的过程中,不可避免地会涉及到数据的管理操作(增、删、改、查),而一旦谈到数据的管理操作,就需要用到数据库管理软件,例如mysql、oracle、Microsoft SQL Server等。 如果应用程序需要操作数据(比如将用户注册信息永久存放起来),那么我们需要

    2024年02月11日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包