Python web开发----->Django(数据模型处理,数据的CRUD)

    Python  web开发----->Django(数据模型处理,数据的CRUD)

一,和数据库的交互:

1,连接到指定数据库,(先手工创建数据库)

2,定义数据模型

3,同步数据库,执行CRUD操作 (配置根管理项目中的setting.py中的 DATABASES)

           ENGINE:数据库连接引擎(默认的'django.db.backends.sqlite3')把sqlite3改   为 mysql

            NAME:要连接的数据库的名称

           USER:连接数据库时的登录账号

         PASSWORD:连接数据库时的登录密码

注意:django默认情况下,封装的是mysqldb模块连接mysql数据库

但是:mysqldb不支持新版本mysql数据库以及新版本的python环境;一般情况下我们使用pymysql替代mysqldb完成和新版本python以及mysql数据库的交互!

需要导入模块来替代MySQLdb:

                 import  pymysql

                 pymsql.install_as_MySQLdb()

二,数据模型:

Django会自动管理我们创建好的数据模型——class类型

自动管理类型——数据模型——处理——继承Django内置的一个类型

django.db.models.Model_所有Django项目中数据模型的父类(我们创建好的数据模型继承父类后,Django会帮我们管理我们创建的模型)

自动管理类型中的属性——面向对象——使用Django内建函数创建属性

django.db.models.AutoField():创建一个自动增长的主键属性

django.db.models.CharField():创建了一个存储字符串的属性

django.db.models.IntegerField():创建了一个存储整数的属性

django.db.models.FloatField():创建一个存储浮点数的属性

django.db.models.TextField():创建爱你一个存储长文本的属性

django.db.models.DateTimeField():创建一个存储日期时间的属性

..

项目中的数据模型,只能定义在程序(子项目)中,不能定义在根管理项中!

三,生成SQL脚本,同步数据库!

创建好数据模型后,生成SQL脚本,同步数据库!

python mange.py makemigrations  生成SQL脚本

python manage.py migrate   同步数据库!

四,在测试命令行中,引入数据模型,对数据模型进行CRUD操作

1,进入Django测试命令行            python manage.py shell

2,引入包中的模块          from user import models  (user是创建好的子程序名称)

例如:

(1)添加数据:

user = models.User(username='老王', userpass='123', age=58, gender='男', email='wang@gebi.com', phone='13838

user.save()  #保存

(2)  修改数据:

         查询到对象~修改对象的数据,保存(先查询到要修改的对象之后):

>>> user.username=’老李’

>>> user.save()

(3)删除数据:

         查询到对象~删除指定的对象(先查询到要删除的对象)

>>> user.delete()

(4)查询数据:

          all()查询所有数据

         filter()查询指定条件的数据

         exclude()查询条件之外的数据

         order_by()排序查询

         values()查询字典形式的数据

(5) 排序:

          u_list = models.User.objects.order_by(‘id’) / order_by(‘-id’)

(6)一些其他操作: 

     # 得到字典数据

       u_dict = models.User.objects.all().values() / filter(..).values()

    # 查询结果中包含多少数据

      models.User.objects.all().count()

   # 得到查询结果中的第一条数据

     models.User.objects.all().first()

  # 得到查询结果中的最后一条数据

     models.User.objects.all().last()

  # 判断查询结果中是否有数据

   models.User.objects.all().exists()

  # 模糊查询

    u_list = models.User.objects.filter(username__contains=’老’)

 # 开始/末尾模糊查询

   u_list = models.User.objects.filter(username__startswith=’老’)

   u_list = models.User.objects.filter(username__endswith=’老’)

  # 范围查询

  u_list = models.User.objects.filter(pk__in=[1,2,3,4,5])

  # 比较查询

   u_list = models.User.objects.filter(age__lte=18)

   u_list = models.User.objects.filter(age__gt=18)

  并且条件:与条件查询(Q对象

  models.User.objects.filter(条件1, 条件2, ..条件n)

  models.User.objects.filter(Q(username=’老王’) & Q(userpass=’123’))


  或者条件:或条件查询

  models.User.objects.filter(Q(username=’老王’) | Q(username=’老李’))

  取反:非条件查询:exclude()/->~Q

  Django提供了一个对象:原始值对象:F对象

  django.db.models.F


models.User.objects.filter(join_time=F(‘update_time’))

五,对应关系(级联操作):

一对一:Husband,Wife 通过外键关联【唯一约束】

一对多:Teacher, Student  通过外键关联【外键定义在多的一方】

多对多:Classes, Student 通过第三张表关联

多个类型之间的查询操作:

一对多[Teacher/Student]

通过一方查询多方:teacher.student_set.all()

通过多方查询一方:student.teacher


一对一[Husband/Wife]

互相查询:

查询husband对应的wife是谁:husband.wife

查询wife对应的husband是谁:wife.husband


多对多[Classes/Student]

查询classes课程所有的学生:classes.student_set.all()

查询studetn学生正在学习的所有课程:student.classes_set.all()

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,348评论 6 491
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,122评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,936评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,427评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,467评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,785评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,931评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,696评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,141评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,483评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,625评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,291评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,892评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,741评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,977评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,324评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,492评论 2 348

推荐阅读更多精彩内容