django 数据库操作

数据库操作

www.bilibili.com/video/BV1mj...

1.mysql下载

dev.mysql.com/downloads/f...

  • mysql +pymysql

django操作数据库更简单,内部提供ORM框架。

复制代码
pip install mysqlclient

ORM可以做下面2件事:

  • 创建、修改、删除表

  • 操作表内容

2.创建数据库

手动创建

3.django链接数据库

settings.py

默认是

python 复制代码
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

mysql的:

python 复制代码
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'django42',
        'USER': 'root',
        'PASSWORD': 'root',
        'HOST': '127.0.0.1',
        'PORT': 3306,
    }
}

会报错,原因是最新的只支持8.0以上版本的mysql

cmd 复制代码
(django42) PS C:\Users\jianj\PycharmProjects\djangoProject> python manage.py makemigrations 
Traceback (most recent call last):
  File "C:\Users\jianj\PycharmProjects\djangoProject\manage.py", line 22, in <module>
.
.
.
.
.
.
File "I:\miniconda3\envs\django42\Lib\site-packages\django\db\backends\base\base.py", line 239, in init_connection_state
    self.check_database_version_supported()
  File "I:\miniconda3\envs\django42\Lib\site-packages\django\db\backends\base\base.py", line 214, in check_database_version_supported
    raise NotSupportedError(
django.db.utils.NotSupportedError: MySQL 8 or later is required (found 5.7.17).

改用最新版mysql成功。

bash 复制代码
(django42) PS C:\Users\jianj\PycharmProjects\djangoProject> python manage.py makemigrations
Migrations for 'app01':
  app01\migrations\0001_initial.py
    - Create model UserInfo
cmd 复制代码
(django42) PS C:\Users\jianj\PycharmProjects\djangoProject> python manage.py migrate
Operations to perform:
  Apply all migrations: admin, app01, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK

4.增加表

models.py进行修改

ini 复制代码
from django.db.models import *


# Create your models here.
class UserInfo(Model):
    name = CharField(max_length=32)
    password = CharField(max_length=64)
    age = IntegerField()


class Department(Model):
    title=CharField(max_length=16)

class Role(Model):
    title=CharField(max_length=16)

再执行

rust 复制代码
app01_department
app01_role
app01_userinfo
auth_group
auth_group_permissions
auth_permission
auth_user
auth_user_groups
auth_user_user_permissions
django_admin_log
django_content_type
django_migrations
django_session

就是修改完毕就得再执行makemigrations 、migrate

修改表新增列需要设置默认值,或者在models.py里直接写 default=xxx

5.操作表数据

python 复制代码
  # 1.增加
    UserInfo.objects.create(name="韩梅梅", password="123456", age=18)
    UserInfo.objects.create(name="韩梅梅", password="123456", age=18)
    UserInfo.objects.create(name="韩梅梅", password="123456", age=18)
    Department.objects.create(title="技术部")
    Department.objects.create(title="技术部")
    Department.objects.create(title="技术部")
    Role.objects.create(title="开发工程师")
    Role.objects.create(title="开发工程师")
    Role.objects.create(title="开发工程师")
    # 2.删除
    UserInfo.objects.filter(id=3).delete()
    UserInfo.objects.all().delete()
    # 3.获取数据
    datalist = Department.objects.all()
    print(datalist)
    for obj in datalist:
        print(obj.id, obj.name, obj.password, obj.age)
    # 4.获取一条数据
    obj = Role.objects.filter(id=1).first()
    print(obj.id, obj.name, obj.password, obj.age)
    # 5.更新数据
    Department.objects.all().update(title="开发部")
    Department.objects.filter(id=2).update(title="技术部")
相关推荐
一点程序9 小时前
基于SpringBoot的选课调查系统
java·spring boot·后端·选课调查系统
怪兽源码11 小时前
基于SpringBoot的选课调查系统
java·spring boot·后端·选课调查系统
csdn_aspnet11 小时前
ASP.NET Core 中的依赖注入
后端·asp.net·di·.net core
昊坤说不出的梦12 小时前
【实战】监控上下文切换及其优化方案
java·后端
疯狂踩坑人12 小时前
【Python版 2026 从零学Langchain 1.x】(二)结构化输出和工具调用
后端·python·langchain
橘子师兄14 小时前
C++AI大模型接入SDK—ChatSDK封装
开发语言·c++·人工智能·后端
@ chen14 小时前
Spring事务 核心知识
java·后端·spring
一点技术15 小时前
基于SpringBoot的选课调查系统
java·spring boot·后端·选课调查系统
RANCE_atttackkk16 小时前
Springboot+langchain4j的RAG检索增强生成
java·开发语言·spring boot·后端·spring·ai·ai编程
好好研究17 小时前
Spring Boot - Thymeleaf模板引擎
java·spring boot·后端·thymeleaf