zoukankan      html  css  js  c++  java
  • 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()关闭游标,释放占用的资源。

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

      

  • 相关阅读:
    zz--Add-Migration与EF及Mysql的使用。。
    最后学期
    E. Tree Queries 题解(思维+dfs序)
    D. 0-1 MST 题解(补图的联通块)
    F. Equalizing Two Strings 题解(思维)
    CSUST 白银御行想展示 题解(思维)
    E2. Rubik's Cube Coloring (hard version) 题解(dp+思维)
    D. Hemose in ICPC ? 题解(二分+dfs序+交互)
    C. Bakry and Partitioning 题解(思维+两次dfs)
    E. Bored Bakry 题解(二进制+思维)
  • 原文地址:https://www.cnblogs.com/zengxuejie/p/14037369.html
Copyright © 2011-2022 走看看