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="技术部")
相关推荐
goTsHgo21 分钟前
在 Spring Boot 的 MVC 框架中 路径匹配的实现 详解
spring boot·后端·mvc
waicsdn_haha32 分钟前
Java/JDK下载、安装及环境配置超详细教程【Windows10、macOS和Linux图文详解】
java·运维·服务器·开发语言·windows·后端·jdk
Q_192849990643 分钟前
基于Spring Boot的摄影器材租赁回收系统
java·spring boot·后端
良许Linux1 小时前
0.96寸OLED显示屏详解
linux·服务器·后端·互联网
求知若饥1 小时前
NestJS 项目实战-权限管理系统开发(六)
后端·node.js·nestjs
左羊1 小时前
【代码备忘录】复杂SQL写法案例(一)
后端
gb42152872 小时前
springboot中Jackson库和jsonpath库的区别和联系。
java·spring boot·后端
程序猿进阶2 小时前
深入解析 Spring WebFlux:原理与应用
java·开发语言·后端·spring·面试·架构·springboot
颜淡慕潇2 小时前
【K8S问题系列 |19 】如何解决 Pod 无法挂载 PVC问题
后端·云原生·容器·kubernetes