# django 数据库操作

# 1 ORM

Django 开发操作数据库更简单,内部提供了 ORM 框架。

ORM 可以理解为翻译层,能够将代码转化成 SQL 语句,然后传递给驱动,去操作数据库

# 2 安装第三方模块

最新的 django 一般采用 mysqlclient 作为底层驱动

1
pip install mysqlclient

# 3 ORM 的使用

ORM 可以帮助我们做两件事:

  • 创建、修改、删除数据库中的表(不用你写 SQL 语句)。 【无法创建数据库】
  • 操作表中的数据(不用写 SQL 语句)。

# 3.1 创建数据库

需要自己手动创建数据库,因为 ORM 无法帮助我们创建数据库。

因为我是利用可视化工具创建的数据库,所以就不贴语句了。

# 3.2 django 连接数据库

  1. 在 settings.py 文件下进行配置和修改

1
2
3
4
5
6
7
8
9
10
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'django', # 数据库名字
'USER': 'root',
'PASSWORD': 'root',
'HOST': '127.0.0.1', # 那台机器安装了MySQL
'PORT': 3306,
}
}

# 3.3 django 操作表

  1. 创建表

在 models.py 文件中,创建一个类

这个类就相当于以下建表语句

1
2
3
4
5
6
create table app01_userinfo(
id bigint auto_increment primary key,
name varchar(32),
password varchar(64),
age int
)

建立好表之后分别执行命令:

1
2
python manage.py makemigrations
python manage.py migrate

执行完以下命令后,就可以看到数据库下有一个 appname_userinfo 的表。

  1. 修改表

当想修改表的时候,可以修改类中的属性。当需要删除某一列时,只需注释该行代码后并执行两个命令。

如果想要增加列,则需要有其他操作。增加列后执行命令后,会执行不成功,命令行会让你选择:1. 手动设置默认值。2. 放弃修改表

  • 手动输入一个值。

  • 设置默认值

    1
    age = models.IntegerField(default=2)

  • 允许为空

    1
    data = models.IntegerField(null=True, blank=True)

# 3.4 操作表中的数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

# #### 1.新建 ####
# Department.objects.create(title="销售部")
# Department.objects.create(title="IT部")
# Department.objects.create(title="运营部")
# UserInfo.objects.create(name="武沛齐", password="123", age=19)
# UserInfo.objects.create(name="朱虎飞", password="666", age=29)
# UserInfo.objects.create(name="吴阳军", password="666")

# #### 2.删除 ####
# UserInfo.objects.filter(id=3).delete()
# Department.objects.all().delete()

# #### 3.获取数据 ####
# 3.1 获取符合条件的所有数据
# data_list = [对象,对象,对象] QuerySet类型
# data_list = UserInfo.objects.all()
# for obj in data_list:
# print(obj.id, obj.name, obj.password, obj.age)

# data_list = [对象,]
# data_list = UserInfo.objects.filter(id=1)
# print(data_list)
# 3.1 获取第一条数据【对象】
# row_obj = UserInfo.objects.filter(id=1).first()
# print(row_obj.id, row_obj.name, row_obj.password, row_obj.age)


# #### 4.更新数据 ####
# UserInfo.objects.all().update(password=999)
# UserInfo.objects.filter(id=2).update(age=999)
# UserInfo.objects.filter(name="朱虎飞").update(age=999)

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

colagold 微信支付

微信支付

colagold 支付宝

支付宝