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()关闭游标,释放占用的资源。
关注个人公众号:测试开发进阶之路