[实验] Django 通过 SQL 语句进行数据查询

注意:

本实验是接着 《Django 最大值、最小值、平均值等特殊数值的数据查询》而继续的

正文:

步骤目录:

步骤一:进入相应的 Django 环境

步骤二:Django SQL 语句完全查询

步骤三:Django SQL 语句部分查询
3.1 导入 Django SQL 语句部分查询的模块
3.2 Django SQL 语句部分查询(含主键查询)
3.2.1 创建游标(含主键查询)
3.2.2 查询数据并导入游标(含主键查询)
3.2.3 将游标里的数据导入到变量里(含主键查询)
3.2.4 将游标里的数据以对象的形式显示出来(含主键查询)
3.2.5 将游标里的数据以列表的形式显示出来(含主键查询)
3.2.6 关闭游标(含主键查询)
3.3 Django SQL 语句部分查询(不包含主键)
3.3.1 创建游标(不包含主键)
3.3.2 查询数据并导入游标(不包含主键)
3.3.3 将游标里的数据导入到变量里(不包含主键)
3.3.4 将游标里的数据以对象的形式显示出来(不包含主键)
3.2.5 将游标里的数据以列表的形式显示出来(不包含主键)
3.2.5 关闭游标(不包含主键)
3.3 Django SQL 语句部分查询(只查询一条数据)
3.3.1 创建游标(只查询一条数据)
3.3.2 查询数据并导入游标(只查询一条数据)
3.3.4 将游标里的数据以对象的形式显示出来(只查询一条数据)
3.2.5 关闭游标(只查询一条数据)

具体的操作步骤:

步骤一:进入相应的 Django 环境

(django_env) [root@python mysite]# python3
>>> import os,django
>>> os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
'mysite.settings'
>>> django.setup()
>>> from user.models import *

步骤二:Django SQL 语句完全查询

>>> user = Student.objects.raw('select * from user_student')
>>> for s in user:
...     print(s)
... 
Student:zhangsan,60
Student:lisi,80
Student:wangwu,90
Student:zhaoliu,70
Student:xueer,70
Student:huangyi,70

(补充:这里以查看 user_student 表中的所有数据为例)

步骤三:Django SQL 语句部分查询
3.1 导入 Django SQL 语句部分查询的模块

>>> from django.db import connection

3.2 Django SQL 语句部分查询(含主键查询)
3.2.1 创建游标(含主键查询)

>>> cur = connection.cursor()

(补充:这里以创建名为 cur 的游标为例)

3.2.2 查询数据并导入游标(含主键查询)

>>> cur.execute('select * from user_student')
6


补充:
1) 这里以查询 user_student 表里到所有数据并导入 cur 游标为例
2) 这里查出的数据总共有 6 条

3.2.3 将游标里的数据导入到变量里(含主键查询)

>>> cs = cur.fetchall()

(补充:这里以将数据导入到 cs 变量里为例)

3.2.4 将游标里的数据以对象的形式显示出来(含主键查询)

>>> print(cs)
((1, 'zhangsan', 60, 1), (2, 'lisi', 80, 1), (3, 'wangwu', 90, 1), (4, 'zhaoliu', 70, 1), (5, 'xueer', 70, 2), (6, 'huangyi', 70, 2))

(补充:这里显示出来的是对象)

3.2.5 将游标里的数据以列表的形式显示出来(含主键查询)

>>> for c in cs:
...     print(c)
... 
(1, 'zhangsan', 60, 1)
(2, 'lisi', 80, 1)
(3, 'wangwu', 90, 1)
(4, 'zhaoliu', 70, 1)
(5, 'xueer', 70, 2)
(6, 'huangyi', 70, 2)

(补充:这里打出来的是列表)

3.2.6 关闭游标(含主键查询)

>>> cur.close()

(补充:这里以关闭 cur 游标为例)

3.3 Django SQL 语句部分查询(不包含主键)
3.3.1 创建游标(不包含主键)

>>> cur = connection.cursor()

(补充:这里以创建名为 cur 的游标为例)

3.3.2 查询数据并导入游标(不包含主键)

>>> cur.execute('select sname,score from user_student')
6


补充:
1) 这里以查询 user_student 表里 sname 字段和 socre 字段的所有数据并导入 cur 游标为例
2) 这里查出的数据总共有 6 条

3.3.3 将游标里的数据导入到变量里(不包含主键)

>>> cs = cur.fetchall()

(补充:这里以将数据导入到 cs 变量里为例)

3.3.4 将游标里的数据以对象的形式显示出来(不包含主键)

>>> print(cs)
(('zhangsan', 60), ('lisi', 80), ('wangwu', 90), ('zhaoliu', 70), ('xueer', 70), ('huangyi', 70))

(补充:这里显示出来的是对象)

3.2.5 将游标里的数据以列表的形式显示出来(不包含主键)

>>> for c in cs:
...     print(c)
... 
('zhangsan', 60)
('lisi', 80)
('wangwu', 90)
('zhaoliu', 70)
('xueer', 70)
('huangyi', 70)

(补充:这里显示出来的是列表)

3.2.5 关闭游标(不包含主键)

>>> cur.close()

(补充:这里以关闭 cur 游标为例)

3.3 Django SQL 语句部分查询(只查询一条数据)
3.3.1 创建游标(只查询一条数据)

>>> cur = connection.cursor()

(补充:这里以创建名为 cur 的游标为例)

3.3.2 查询数据并导入游标(只查询一条数据)

>>> cur.execute('select * from user_clazz where id=1')
1


补充:
1) 这里以查询 user_clazz 表里 id 字段的值为 1 为例
2) 这里查出的数据总共有 1 条

3.3.4 将游标里的数据以对象的形式显示出来(只查询一条数据)

>>> cur.fetchone()
(1, 'Class1')

(补充:这里显示出来的是列表)

3.2.5 关闭游标(只查询一条数据)

>>> cur.close()

(补充:这里以关闭 cur 游标为例)