Django关联已有数据库中已有的数据表

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

Django关联已有数据库中已有的数据表

兜兜转转,发现自己还得用Python写后端,无语。。。

在写Django项目时,一般是通过模型来创建表,以及通过ORM框架来实现数据的crud,现在的情况是,如果我们的数据表已经存在了,如何引入到Django的项目中,方便我们实现ORM操作呢,记录一下可行的方案

第一步,连接数据库

如:我想连接我MySQL数据库中的blog数据库,其中有两张表是数据库中本身就存在的表,分别是blog和category表,并非是通过Django创建的,如下图:

Django关联已有数据库中已有的数据表,Python基础,数据库,django,MySQL

需要在settings.py文件中写入数据库的信息,如下:

Django关联已有数据库中已有的数据表,Python基础,数据库,django,MySQL

代码:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'HOST': '127.0.0.1',		# 要连接的数据库ip
        'PORT': '3306',				# 数据库连接端口,一般默认为3306
        'NAME': 'blog',			# 已经存在的数据库名称
        'USER': 'root',				# 用户名
        'PASSWORD': 'xxxxx',				# 用户密码
        'OPTIONS': {
            'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
            }
    }
}

第二步,导入MySQL配置

在settings.py同级目录的__init__.py文件中增加下面代码,导入mysql的配置

Django关联已有数据库中已有的数据表,Python基础,数据库,django,MySQL

代码:

import pymysql
pymysql.install_as_MySQLdb()

如果没有安装pymysql可以先安装一下,其实我并没有验证这步是不是必须的,但确实成功了

第三步,导入数据表到Django项目中

终端执行下面的命令

python manage.py inspectdb > models.py

Django关联已有数据库中已有的数据表,Python基础,数据库,django,MySQL

执行命令后,会在根目录下自动生成一个模型文件models.py

第四步,修改models.py文件

打开刚才生成的models.py文件,里面的代码如下:

Django关联已有数据库中已有的数据表,Python基础,数据库,django,MySQL

它会自动生成与数据表相关的模型,但如果想在自己定义的app中使用的话,还不够,需要自己去指定app名称,就是我框出来的那段话,意思是这个模型是给app01这个应用使用的,不然会报错

其实就是在模型的Meta类下添加app_label属性,如下

app_label = 'app01'

这种方式不太符合逻辑,因为我是要在应用中去写模型,而不是模型中去绑定应用,所以我推荐用下面这种做法

把自动生成的models.py中自动生成的代码,拷贝到对应app也就是app01中的models.py文件中,并统一做如下调整:

Django关联已有数据库中已有的数据表,Python基础,数据库,django,MySQL

因为这个models.py就是app01的模型,所以无需写app_label = ‘app01’

接下来就可以删除自动生成的models.py文件了

第五步,数据迁移

通用操作,终端执行下面的代码:

python manage.py migrate

第六步,视图函数中应用模型

如,我想获取blog表中所有的数据,在视图函数中添加以下方法就行了

from django.http import JsonResponse
from django.shortcuts import render

# Create your views here.
from django.views.decorators.csrf import csrf_exempt
from .models import Blog

@csrf_exempt
def index(request):
    if request.method == 'POST':
        blogs = Blog.objects.all()
        blog_data = [{'id': blog.id, 'title': blog.title, 'content': blog.content} for blog in blogs]
        print(request.POST['name'])
    return JsonResponse(blog_data, safe=False)

这段代码是我上面pycharm截图中右边的文件,位置是app01的views.py文件中

有两个注意点:

  1. @csrf_exempt是为了解决跨域问题
  2. return JsonResponse(blog_data, safe=False)其中的safe=False必须写,因为blog_data是一个列表(或者叫数组,有点魔怔了,Python中叫列表,java和JavaScript叫数组),并非json格式的数据,直接用JsonResponse返回会报错,添加safe=False就是不去强行检查返回的数据格式

正确配置路由后,就可以去postman测一下接口是不是通的了

Django关联已有数据库中已有的数据表,Python基础,数据库,django,MySQL可以看到,接口正确返回了想要的数据文章来源地址https://www.toymoban.com/news/detail-804883.html

到了这里,关于Django关联已有数据库中已有的数据表的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Django基础入门⑪:DjangoDjango数据表关联(一对一,一对多,多对多关系)

    🏘️🏘️个人简介:以山河作礼。 🎖️🎖️: Python领域新星创作者,CSDN实力新星认证,阿里云社区专家博主,CSDN内容合伙人 🎁🎁:Web全栈开发专栏:《Web全栈开发》免费专栏,欢迎阅读! 🎁🎁: 文章末尾扫描二维码可以加入粉丝交流群,不定期免费送书。 Django数据表关

    2024年02月12日
    浏览(39)
  • Django的mysql数据库问题:同一个模型(同一张表)中的不同记录也是可以相互关联的【使用“自引用关系”】

    是的,确实可以在Django的模型中使用外键来建立同一模型中不同记录之间的关联关系。这样的关联关系被称为自引用关系(self-referential relationship)或者自关联关系。通过在模型中定义外键字段,你可以使模型的实例与同一模型中的其他实例产生关联。 在Django中,这通常通过

    2024年01月18日
    浏览(41)
  • SQL Server数据库中已存在名为‘student‘的对象。

    新手,学习的网上例子,在第一次新建表时,执行无错误;第二次再次执行就报错:数据库中已存在名为‘student’的对象。说明了这个名为‘student’的表已经建立,如果要再次新建表,就得把旧的表删除后重新执行。如果表已经设置好各项参数了,建议还是不要删掉哈,不

    2024年02月07日
    浏览(33)
  • 数据库基础——数据库、数据表和SQL语句

    数据库是用来存储、管理数据的仓库 数据表是数据的存储结构 Structured Query Language,结构化查询语言,用来操作数据库 安装MySQL,自行百度 进入cmd使用命令 mysql -hAddress -uUser -p(Password) 登录数据库 -p后直接回车可进入密文登录 如果出现以下报错,则打开任务管理器-服务-开启

    2024年02月09日
    浏览(56)
  • idea配置MySQL数据库,以及将已存在的数据表导入数据库

    首先,确定自己需要的数据库名字,结合jeecg项目,我在项目中得知我需要链接的数据库的名字为     jeecg-boot 打开数据库的可视化软件,     点击开始,即可导入,刷新数据库,就可以看到导入的数据表了。 接下来在idea链接MySQL     点击OK,就完成配置了,刷新一下,就

    2024年02月11日
    浏览(48)
  • 数据库||数据表的更新

    1.实验题目:数据表的更新 2.实验目和要求: 1)掌握SQL语句的数据操纵功能 2)掌握SQL语言的数据插入,修改,删除操作 3)掌握与嵌套查询相结合的插入,删除,修改数据的SQL语句 3.实验步骤: 1) 按实验内容要求完成各项操作 2) 根据题目要求给出解决方案 3) 提交实验报告 4.实验内容

    2024年02月19日
    浏览(39)
  • 【JaveWeb教程】(18) MySQL数据库开发之 MySQL数据库设计-DDL 如何查询、创建、使用、删除数据库数据表 详细代码示例讲解

    下面我们就正式的进入到SQL语句的学习,在学习之前先给大家介绍一下我们要开发一个项目,整个开发流程是什么样的,以及在流程当中哪些环节会涉及到数据库。 2.1 项目开发流程 需求文档: 在我们开发一个项目或者项目当中的某个模块之前,会先会拿到产品经理给我们提

    2024年01月25日
    浏览(69)
  • mysql数据库和数据表

    常用的数据类型: int : 整型  用于定义整数类型的数据 float : 单精度浮点4字节32位  准确表示到小数点后六位. double :双精度浮点8字节64位 char :固定长度的字符类型  用于定义字符类型数据 varchar :可变长度的字符类型 text : 文本 image: :图片 SQL语言: Structured Query La

    2024年02月10日
    浏览(51)
  • 数据库实验2 创建数据表修改数据表和删除数据表

    实验2 创建数据表修改数据表和删除数据表 实验类型: ●验证性实验  ○综合性实验  ○设计性实验 实验目的:      (1)了解数据表的结构特点。      (2)掌握表中列定义时所用到的各种数据类型。      (3)学会使用企业管理器(即MSSMS-----Microsoft SQL Server Manag

    2024年02月07日
    浏览(54)
  • MySQL数据库——6、删除数据表

    删除一个数据表,使用 SQL 命令 DROP TABLE 。 DROP TABLE 命令允许从数据库中永久删除指定的数据表及其所有数据。 DROP TABLE table_name;   table_name 是要删除的数据表的名称。 例如,要删除名为 users 的数据表,可以执行以下 SQL 命令: DROP TABLE users;   执行此命令后,名为 users 的数据

    2024年04月11日
    浏览(40)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包