zengxuejie

导航

Python Web开发学习-Django(11)导入数据到数据库

modles.py文件中添加模型定义

1.准备一个CSV文件,例如这种的学生表:

2.modles.py中代码如下:

class scores(models.Model):             #定义实例数据模型,id字段自动添加,无需定义
    kh=models.CharField(max_length=8) 
    xm=models.CharField(max_length=8) 
    yw=models.SmallIntegerField()
    sx=models.SmallIntegerField()
    bj=models.CharField(max_length=8)

3.cmd进入到项目将模型迁移到数据库

 python manage.py makemigrations 

 python manage.py migrate 

4.将准备的csv文件导入到数据表中

1. sqlite3 db.sqlite3 

2.  .separator ','  

3.  .import 文件.csv faqs_scores 

5.重启VS软件,刷新数据库,数据就都导入进来了。

F()表达式

1.使用F()表达式,可以很方便的进行字段的值的修改,例如:加减乘除

cmd进入项目编辑页面: python manage.py shell 

举例,将学号是10110103的yw的值+10

from faqs.models import scores
from django.db.models import F  #导入F方法
d = scores.objects.get(kh='10110103')
d.yw=F('yw')+10
d.save()
d.refresh_from_db() #保存之后只有执行重新加载的方法,才可以真正生效。

2.使用F()方法进行字段过滤

过滤yw和sx相等的数据

ds=scores.objects.filter(yw=F('sx'))
for a in ds:
    print(a.id,a.kh,a.yw,a.sx)

 聚合函数

使用聚合函数时使用aggregate()方法

例如计算yw的平均值,最大值和最小值

from django.db.models import Avg,Max,Min #先导入这些方法
scores.objects.aggregate(Avg('yw'),Max('yw'),Min('yw"))

也可以指定名字,注意指定的时候要都指定,不能只指定一个值

raw()方法

raw()方法是用于执行SQL中的select查询

from faqs.models import scores
ds=scores.objects.raw("select * from faqs_scores where yw>70 and sx>70")
for a in ds:
    print(a.id,a.kh,a.yw,a.sx)

直接执行原始SQL

使用django.db.connection.cursor()方法

例如查看学生表的所有信息:

from django.db import connection   #先导入connection方法

cursor.execute("select * from faqs_scores")
for a in cursor.fetchall():
    print(a[0],a[1],a[2])

 fetchall()方法返回的是数据的列表,数据库中的每行数据对应一个元组。

fetchone()  返回当前数据行,调用一次方法会使下一个数据行成为当前行

同样的增删改查都是使用cursor这个方法将select改成对应的 insert,update和delete即可。

关闭cursor

使用完之后,cursor.close()关闭游标,释放占用的资源。

关注个人公众号:测试开发进阶之路

  

posted on 2020-12-02 16:26  曾小懒  阅读(741)  评论(0编辑  收藏  举报