当前位置: 首页 > news >正文

Python学习笔记--使用Django操作mysql

注意:本笔记基于python 3.12,不同版本命令会有些许差别!!!

Django 模型

Django 对各种数据库提供了很好的支持,包括:PostgreSQL、MySQL、SQLite、Oracle。

Django 为这些数据库提供了统一的调用API,可以根据自己业务需求选择不同的数据库。

Django ORM

Django 模型使用自带的 ORM。

对象关系映射(Object Relational Mapping,简称 ORM )用于实现面向对象编程语言里不同类型系统的数据之间的转换。

ORM 在业务逻辑层和数据库层之间充当了桥梁的作用。

ORM 是通过使用描述对象和数据库之间的映射的元数据,将程序中的对象自动持久化到数据库中。

使用Django操作mysql

Django 官方推荐使用 mysqlclient 而不是 pymysql

如果没安装 mysql 驱动,可以执行以下命令安装:

# 安装 mysqlclient
pip install mysqlclient

数据库配置

1.创建 MySQL 数据库

ORM 无法操作到数据库级别,只能操作到数据表,这里我们使终端命令创建数据库

 # 防止编码问题,指定为 utf8
create database 数据库名称 default charset=utf8;

2.在项目的 settings.py 文件中找到 DATABASES 配置项,将其信息修改为:

DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'demo','USER': 'root','PASSWORD': 'root','HOST': '192.168.56.10','PORT': '3396'}
}

其中NAME为数据库名

3.定义模型,创建 APP

Django 规定,如果要使用模型,必须要创建一个 app。可以使用以下命令创建一个 TestModel 的 app

django-admin startapp TestModel

项目结构

修改TestModel/app.py文件, 确保有正确的 AppConfig

from django.apps import AppConfigclass TestmodelConfig(AppConfig):default_auto_field = 'django.db.models.BigAutoField'name = 'TestModel'

 修改settings.py文件,

default_app_config = 'TestModel.apps.TestmodelConfig'

修改 TestModel/models.py 文件 

# models.py
from django.db import modelsclass Test(models.Model):name = models.CharField(max_length=20)

 以上的类名Test代表了数据库表名,且继承了models.Model,类里面的字段代表数据表中的字段(name),数据类型则由CharField(相当于varchar)、DateField(相当于datetime),max_length 参数限定长度。

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

INSTALLED_APPS = ('django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','TestModel',               # 添加此项
)

在命令行中运行

# 1. 创建迁移文件
python manage.py makemigrations TestModel# 2. 查看生成的迁移文件(确认有输出)
python manage.py showmigrations TestModel# 3. 应用迁移
python manage.py migrate TestModel# 4. 检查数据库表是否创建
python manage.py dbshell
# 在MySQL shell中执行:SHOW TABLES;

看到几行 "Creating table…" 的字样,则表明数据表就创建好了。

Creating tables ...
……
Creating table TestModel_test  #我们自定义的表
……

 表名组成结构为:应用名_类名(如:TestModel_test)。

注意:尽管我们没有在 models 给表设置主键,但是 Django 会自动添加一个 id 作为主键。

如果执行成功,数据库多了2张表

4.数据库操作

接下来我们在 hello_django目录中添加 testdb.py 文件(下面介绍),并修改 urls.py:

from django.urls import pathfrom . import views,testdburlpatterns = [path('runoob/', views.runoob),path('testdb/', testdb.testdb),
]

添加数据

添加数据需要先创建对象,然后再执行 save 函数,相当于SQL中的INSERT:

testdb.py文件代码

# -*- coding: utf-8 -*-from django.http import HttpResponsefrom TestModel.models import Test# 数据库操作
def testdb(request):test1 = Test(name='django')test1.save()return HttpResponse("<p>数据添加成功!</p>")

在命令行输入下面的命令启动应用

 python manage.py runserver 0.0.0.0:8000

使用浏览器访问http://127.0.0.1:8000/testdb 就可以看到数据添加成功的提示。

查看数据库表,多了一条记录。

相关文章:

  • 一键启动多个 Chrome 实例并自动清理的 Bash 脚本分享!
  • AWS EKS IP 耗尽:原因、解决方案和最佳实践
  • 【AWS入门】AWS身份验证和访问管理(IAM)
  • 【Windows系统】向量数据库Milvus安装教程
  • Win10 安装单机版ES(elasticsearch),整合IK分词器和安装Kibana
  • 鸿蒙PC操作系统:从Linux到自研微内核的蜕变
  • 手机内存不够,哪些文件可以删?
  • 小红书的视频怎么保存没有水印(方法分享)
  • linux——mysql故障排查与生产环境优化
  • Python打卡DAY30
  • MySQL函数触发:函数处理与触发器自动化应用
  • Node 服务监控及通过钉钉推送告警提醒
  • 实战教程:影刀RPA采集闲鱼商品并分享钉钉
  • Linux内核深入学习(4)——内核常见的数据结构2——红黑树
  • 深入解析Spring Boot与Kafka集成:构建高效消息驱动微服务
  • 常见排序算法整理(Java实现)
  • 开发 前端搭建npm v11.4.0 is known not to run on Node.js v14.18.1.
  • 星际争霸小程序:用Java实现策略模式的星际大战
  • 使用 ABP vNext 集成 MinIO 构建高可用 BLOB 存储服务
  • NLP学习路线图(一): 线性代数(矩阵运算、特征值分解等)
  • 贵州茅台:支持工作餐不上酒的规定,请投资者相信茅台创新和自我调节能力
  • 欧洲观察室|欧盟对华战略或在中欧建交50年时“低开高走”
  • 国家统计局:下阶段要继续发挥宏观政策作用,促进价格合理回升
  • 83岁山水花鸟画家、书法家吴静山离世,系岭南画派代表人物
  • 专利申请全球领先!去年我国卫星导航与位置服务产值超5700亿元
  • 以色列媒体:哈马斯愿意释放部分人员换取两个月停火