一、ORM的操作方法总结

  1.  
  1. get(self, *args, **kwargs):
  2.   # 获取单个对象
  3.  
  4.   def one_get(request):
  1.   #直接得到一个表对象,也就是表记录 如果得到多个会报错
  2.   stu_obj=student.objects.get(id=4)
  3.   print(stu_obj)
  4.   #取值
  5.   print(stu_obj.name)
  6. return HttpResponse("查询结束")
  1. all()方法
  1. def one_all(request):
  2. #查询结果是一个QuerySet,类似列表,里面是所有的表对象也叫表记录
  3. stu_obj_list=student.objects.all()
  4. print(stu_obj_list)
  5. #迭代出每一个表记录,通过属性对其取值
  6. for i in stu_obj_list:
  7. print(i)
  1. filter(self, *args, **kwargs)方法
  2. # 条件查询
  3. # 条件可以是:参数,字典,Q
  1. def one_filter(request):
  2. #单用filter得到是一个QuerySet的对象,类似列表,可迭代,可切片
  3. stu_obj = student.objects.filter(id=4)
  4. print(stu_obj)
  5. #将里面的数据迭代,结构是一个表记录对象,可以通过点的方式取值
  6. for i in stu_obj:
  7. print(i) #表对象,就是一个表的记录
  8. print(i.name) #取值
  9. return HttpResponse("查询结束")
  1. exclude(self, *args, **kwargs)
  2. # 条件查询
  3. # 条件可以是:参数,字典,Q
  1. def one_exclude(request):
      #查询结果是QuerySet对象,里面的元素是除了给定条件的所有表对象,也叫表记录
    stu_obj = student.objects.exclude(name="wallace")
      #和上面的效果一样
    stu_obj1 = student.objects.all().exclude(name="wallace")
    print(stu_obj)
    for i in stu_obj:
    print(i.name)
    print(stu_obj1)
    return HttpResponse("exclude success")
  1. select_related(self, *fields)
  2. 性能相关:表之间进行join连表操作,一次性获取关联的数据。
    #主要应用于跨表查询时,为了减少向数据库发送操作的次数
  1. def on_select_related(request):
    #多操作写法,先获取表对象,再通过表对象的外键属性再次发起查询操作
    classmate_obj = models.ClassMate.objects.all()
    for obj in classmate_obj:
    print(obj.tg.title)
    #将两表合并成一个,发起一次操作请求,如果有多个外键,跨多表就加多个参数
    #select * from ClassMate left join Tag on ClassMate.id = Tag.id,
    models.ClassMate.objects.all().select_related("tg")
  1. models.ClassMate.objects.all().select_related("tg",'at')
  1. annotate(self, *args, **kwargs)
  2. # 用于实现聚合group by查询
  3.  
  4. from django.db.models import Count, Avg, Max, Min, Sum
  5.  
  6. v = models.UserInfo.objects.values('u_id').annotate(uid=Count('u_id'))
  7. # SELECT u_id, COUNT(ui) AS `uid` FROM UserInfo GROUP BY u_id
  8.  
  9. v = models.UserInfo.objects.values('u_id').annotate(uid=Count('u_id')).filter(uid__gt=1)
  10. # SELECT u_id, COUNT(ui_id) AS `uid` FROM UserInfo GROUP BY u_id having count(u_id) > 1
  11.  
  12. v = models.UserInfo.objects.values('u_id').annotate(uid=Count('u_id',distinct=True)).filter(uid__gt=1)
  13. # SELECT u_id, COUNT( DISTINCT ui_id) AS `uid` FROM UserInfo GROUP BY u_id having count(u_id) > 1
  14.  
  15. distinct(self, *field_names)
  16. # 用于distinct去重
  17. models.UserInfo.objects.values('nid').distinct()
  18. # select distinct nid from userinfo
  19.  
  20. 注:只有在PostgreSQL中才能使用distinct进行去重
  21.  
  22. order_by(self, *field_names)
  23. # 用于排序
  1.   def one_order(request):
  2.   #排序
  3.   stu_obj = student.objects.all().order_by("age")
  4.   stu_obj1 = student.objects.order_by("age")
  5.   stu_obj3 = student.objects.filter(age__gt=20).order_by("age")
  6.   print(stu_obj3)
  7.   for i in stu_obj3:
  8.   print(i.age)
  9.   return HttpResponse("order success")
  1. reverse(self):
      #在排序的基础上加上这个语句,进行反向排序,单独使用无意义
  1.   def one_reverse(request):
  2.   stu_obj = student.objects.all().order_by("age").reverse()
  3.   stu_obj1 = student.objects.filter(age__gte=20).order_by("age").reverse()
  4.   print(stu_obj)
  5.   for i in stu_obj:
  6.   print(i.age)
  7.   return HttpResponse("rever success")
  1. def extra(self, select=None, where=None, params=None, tables=None, order_by=None, select_params=None)
  2. # 构造额外的查询条件或者映射,如:子查询
  3. Entry.objects.extra(select={'new_id': "select col from sometable where othercol > %s"}, select_params=(1,))
  4. Entry.objects.extra(where=['headline=%s'], params=['Lennon'])
  5. Entry.objects.extra(where=["foo='a' OR bar = 'a'", "baz = 'a'"])
  6. Entry.objects.extra(select={'new_id': "select id from tb where id > %s"}, select_params=(1,), order_by=['-nid'])
  7.  
  8. defer(self, *fields):
  1.   #映射中排除某列数据,取其他列的数据,和value的区别就是这个取的是对象,通过对象来去属性,而value去的是字典
  1.   models.UserInfo.objects.defer('username','id')
  2.   models.UserInfo.objects.filter(...).defer('username','id')
  3. only(self, *fields):
  4. #仅取某个表中的数据
  5. models.UserInfo.objects.only('username','id')
  6. models.UserInfo.objects.filter(...).only('username','id')
  7.  
  8. using(self, alias):
  9. 指定使用的数据库,参数为别名(setting中的设置)
       settingdefault中可以有不同的数据库,using的参数就是数据库,在查询时可以选择不同是数据库
        
      def query_data(request):
  1.   ClassMate.objects.all().using("databasename"
  1. ##################################################
  2. # PUBLIC METHODS THAT RETURN A QUERYSET SUBCLASS #
  3. ##################################################
  4.  
  5. raw(self, raw_query, params=None, translations=None, using=None):
  6. # 执行原生SQL
  7. models.UserInfo.objects.raw('select * from userinfo')
  8.  
  9. # 如果SQL是其他表时,必须将名字设置为当前UserInfo对象的主键列名
  10. models.UserInfo.objects.raw('select id as nid from 其他表')
  11.  
  12. # 为原生SQL设置参数
  13. models.UserInfo.objects.raw('select id as nid from userinfo where nid>%s', params=[12,])
  14.  
  15. # 将获取的到列名转换为指定列名
  16. name_map = {'first': 'first_name', 'last': 'last_name', 'bd': 'birth_date', 'pk': 'id'}
  17. Person.objects.raw('SELECT * FROM some_other_table', translations=name_map)
  18.  
  19. # 指定数据库
  20. models.UserInfo.objects.raw('select * from userinfo', using="default")
  21.  
  22. ################### 原生SQL ###################
  23. from django.db import connection, connections
  24. cursor = connection.cursor() # cursor = connections['default'].cursor()
  25. cursor.execute("""SELECT * from auth_user where id = %s""", [1])
  26. row = cursor.fetchone() # fetchall()/fetchmany(..)
  27.  
  28. values(self, *fields):
  29. # 获取每行数据为字典格式
  1.   def one_value(request):
  2.   #values得到的是一个特殊的QuerySet对象,类似列表,但里面的元素是一个一个的字典
  3.   stu_obj = student.objects.values("name")
      print(stu_obj)
  4.   #得到的是一个特殊的QuerySet对象,类似列表,里面的元素是一个一个字典
  5.   stu_obj2 = student.objects.filter(id=3).values("name")
  6.   print(stu_obj2)
  1. values_list(self, *fields, **kwargs):
  2. # 获取每行数据为元祖
  1.   def one_value_list(request):
  2.   #和value类似,返回的是QuerySet对象,不过里面元素是列表的形式
  3.   stu_obj = student.objects.values_list()
  4.   print(stu_obj)
  1. dates(self, field_name, kind, order='ASC')
  2. # 根据时间进行某一部分进行去重查找并截取指定内容
  3. # kind只能是:"year"(年), "month"(年-月), "day"(年-月-日)
  4. # order只能是:"ASC" "DESC"
  5. # 并获取转换后的时间
  6. - year : 年-01-01
  7. - month: 年-月-01
  8. - day : 年-月-日
  9. models.DatePlus.objects.dates('ctime','day','DESC')
  10.  
  11. datetimes(self, field_name, kind, order='ASC', tzinfo=None):
  12. # 根据时间进行某一部分进行去重查找并截取指定内容,将时间转换为指定时区时间
  13. # kind只能是 "year", "month", "day", "hour", "minute", "second"
  14. # order只能是:"ASC" "DESC"
  15. # tzinfo时区对象
  16. models.DDD.objects.datetimes('ctime','hour',tzinfo=pytz.UTC)
  17. models.DDD.objects.datetimes('ctime','hour',tzinfo=pytz.timezone('Asia/Shanghai'))
  18.  
  19. """
  20. pip3 install pytz
  21. import pytz
  22. pytz.all_timezones
  23. pytz.timezone(‘Asia/Shanghai’)
  24. """
  25. ####################################
  26. # METHODS THAT DO DATABASE QUERIES #
  27. ####################################
  28.  
  29. aggregate(self, *args, **kwargs):
  30. # 聚合函数,获取字典类型聚合结果
  31. from django.db.models import Count, Avg, Max, Min, Sum
  32. result = models.UserInfo.objects.aggregate(k=Count('u_id', distinct=True), n=Count('nid'))
  33. ===> {'k': 3, 'n': 4}
  34.  
  35. count(self):
  36. # 获取个数
  1.   def one_count(request):
  2.   #统计得到表对象的数量
  3.   stu_obj = student.objects.all().count()
  4.   print(stu_obj)
  5.   stu_obj1 = student.objects.filter(age__gte=30).count()
  6.   print(stu_obj1)
  7.   stu_obj2 = student.objects.count()
  8.   print(stu_obj2)
  9.   return HttpResponse("success")
  1. def create(self, **kwargs):
  2. # 创建对象
  3.  
  4. def bulk_create(self, objs, batch_size=None):
  5. # 批量插入
  6. # batch_size表示一次插入的个数
  7. objs = [
  8. models.DDD(name='r11'),
  9. models.DDD(name='r22')
  10. ]
  11. models.DDD.objects.bulk_create(objs, 10)
  12.  
  13. def get_or_create(self, defaults=None, **kwargs):
  14. # 如果存在,则获取,否则,创建
  15. # defaults 指定创建时,其他字段的值
  16. obj, created = models.UserInfo.objects.get_or_create(username='root1', defaults={'email': '','u_id': 2, 't_id': 2})
  17.  
  18. def update_or_create(self, defaults=None, **kwargs):
  19. # 如果存在,则更新,否则,创建
  20. # defaults 指定创建时或更新时的其他字段
  21. obj, created = models.UserInfo.objects.update_or_create(username='root1', defaults={'email': '','u_id': 2, 't_id': 1})
  22.  
  23. def first(self):
  24. # 获取第一个
  25.  
  26. def last(self):
  27. # 获取最后一个
  28.  
  29. def in_bulk(self, id_list=None):
  30. # 根据主键ID进行查找
  31. id_list = [11,21,31]
  32. models.DDD.objects.in_bulk(id_list)
  33.  
  34. def delete(self):
  35. # 删除
  36.  
  37. def update(self, **kwargs):
  38. # 更新
  39.  
  40. def exists(self):
  41. # 是否有结果
  42. 复制代码

二、字段类型

  1.    AutoField(Field)
  2. - int自增列,必须填入参数 primary_key=True
  3. BigAutoField(AutoField)
  4. - bigint自增列,必须填入参数 primary_key=True
  5. 注:当model中如果没有自增列,则自动会创建一个列名为id的列
  6. from django.db import models
  7.  
  8. class UserInfo(models.Model):
  9. # 自动创建一个列名为id的且为自增的整数列
  10. username = models.CharField(max_length=32)
  11.  
  12. class Group(models.Model):
  13. # 自定义自增列
  14. nid = models.AutoField(primary_key=True)
  15. name = models.CharField(max_length=32)
  16.  
  17. SmallIntegerField(IntegerField):
  18. - 小整数 -32768 32767
  19. PositiveSmallIntegerField(PositiveIntegerRelDbTypeMixin, IntegerField)
  20. - 正小整数 0 32767
  21. IntegerField(Field)
  22. - 整数列(有符号的) -2147483648 2147483647
  23. PositiveIntegerField(PositiveIntegerRelDbTypeMixin, IntegerField)
  24. - 正整数 0 2147483647
  25. BigIntegerField(IntegerField):
  26. - 长整型(有符号的) -9223372036854775808 9223372036854775807
  27. BooleanField(Field)
  28. - 布尔值类型
  29. NullBooleanField(Field):
  30. - 可以为空的布尔值
  31.  
  32. CharField(Field)
  33. - 字符类型
  34. - 必须提供max_length参数, max_length表示字符长度
  35. TextField(Field)
  36. - 文本类型
  37. EmailField(CharField):
  38. - 字符串类型,Django Admin以及ModelForm中提供验证机制
  39.  
  40. IPAddressField(Field)
  41. - 字符串类型,Django Admin以及ModelForm中提供验证 IPV4 机制
  42.  
  43. GenericIPAddressField(Field)
  44. - 字符串类型,Django Admin以及ModelForm中提供验证 Ipv4Ipv6
  45. - 参数:
  46. protocol,用于指定Ipv4Ipv6 'both',"ipv4","ipv6"
  47. unpack_ipv4 如果指定为True,则输入::ffff:192.0.2.1时候,可解析为192.0.2.1,开启刺功能,需要protocol="both"
  48.  
  49. URLField(CharField)
  50. - 字符串类型,Django Admin以及ModelForm中提供验证 URL
  51.  
  52. SlugField(CharField)
  53. - 字符串类型,Django Admin以及ModelForm中提供验证支持 字母、数字、下划线、连接符(减号)
  54.  
  55. CommaSeparatedIntegerField(CharField)
  56. - 字符串类型,格式必须为逗号分割的数字
  57.  
  58. UUIDField(Field)
  59. - 字符串类型,Django Admin以及ModelForm中提供对UUID格式的验证
  60.  
  61. FilePathField(Field)
  62. - 字符串,Django Admin以及ModelForm中提供读取文件夹下文件的功能
  63. - 参数:
  64. path, 文件夹路径
  65. match=None, 正则匹配
  66. recursive=False, 递归下面的文件夹
  67. allow_files=True, 允许文件
  68. allow_folders=False, 允许文件夹
  69.  
  70. FileField(Field)
  71. - 字符串,路径保存在数据库,文件上传到指定目录
  72. - 参数:
  73. upload_to = "" 上传文件的保存路径
  74. storage = None 存储组件,默认django.core.files.storage.FileSystemStorage
  75.  
  76. ImageField(FileField)
  77. - 字符串,路径保存在数据库,文件上传到指定目录
  78. - 参数:
  79. upload_to = "" 上传文件的保存路径
  80. storage = None 存储组件,默认django.core.files.storage.FileSystemStorage
  81. width_field=None, 上传图片的高度保存的数据库字段名(字符串)
  82. height_field=None 上传图片的宽度保存的数据库字段名(字符串)
  83.  
  84. DateTimeField(DateField)
  85. - 日期+时间格式 YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]
  86.  
  87. DateField(DateTimeCheckMixin, Field)
  88. - 日期格式 YYYY-MM-DD
  89.  
  90. TimeField(DateTimeCheckMixin, Field)
  91. - 时间格式 HH:MM[:ss[.uuuuuu]]
  92.  
  93. DurationField(Field)
  94. - 长整数,时间间隔,数据库中按照bigint存储,ORM中获取的值为datetime.timedelta类型
  95.  
  96. FloatField(Field)
  97. - 浮点型
  98.  
  99. DecimalField(Field)
  100. - 10进制小数
  101. - 参数:
  102. max_digits,小数总长度
  103. decimal_places,小数位长度
  104.  
  105. BinaryField(Field)
  106. - 二进制类型

三、字段参数

  1. null 数据库中字段是否可以为空
  2. db_column 数据库中字段的列名
  3. default 数据库中字段的默认值
  4. primary_key 数据库中字段是否为主键
  5. db_index 数据库中字段是否可以建立索引
  6. unique 数据库中字段是否可以建立唯一索引
  7. unique_for_date 数据库中字段【日期】部分是否可以建立唯一索引
  8. unique_for_month 数据库中字段【月】部分是否可以建立唯一索引
  9. unique_for_year 数据库中字段【年】部分是否可以建立唯一索引
  10.  
  11. verbose_name Admin中显示的字段名称
  12. blank Admin中是否允许用户输入为空
  13. editable Admin中是否可以编辑
  14. help_text Admin中该字段的提示信息
  15. choices Admin中显示选择框的内容,用不变动的数据放在内存中从而避免跨表操作
  16. 如:gf = models.IntegerField(choices=[(0, '何穗'),(1, '大表姐'),],default=1)
  17.  
  18. error_messages 自定义错误信息(字典类型),从而定制想要显示的错误信息;
  19. 字典健:null, blank, invalid, invalid_choice, unique, and unique_for_date
  20. 如:{'null': "不能为空.", 'invalid': '格式错误'}
  21.  
  22. validators 自定义错误验证(列表类型),从而定制想要的验证规则
  23. from django.core.validators import RegexValidator
  24. from django.core.validators import EmailValidator,URLValidator,DecimalValidator,\
  25. MaxLengthValidator,MinLengthValidator,MaxValueValidator,MinValueValidator
  26. 如:
  27. test = models.CharField(
  28. max_length=32,
  29. error_messages={
  30. 'c1': '优先错信息1',
  31. 'c2': '优先错信息2',
  32. 'c3': '优先错信息3',
  33. },
  34. validators=[
  35. RegexValidator(regex='root_\d+', message='错误了', code='c1'),
  36. RegexValidator(regex='root_112233\d+', message='又错误了', code='c2'),
  37. EmailValidator(message='又错误了', code='c3'), ]
  38. )
  39. 复制代码

四、多表关系及参数

  1. ForeignKey(ForeignObject) # ForeignObject(RelatedField)
  2. to, # 要进行关联的表名
  3. to_field=None, # 要关联的表中的字段名称
  4. on_delete=None, # 当删除关联表中的数据时,当前表与其关联的行的行为
  5. - models.CASCADE,删除关联数据,与之关联也删除
  6. - models.DO_NOTHING,删除关联数据,引发错误IntegrityError
  7. - models.PROTECT,删除关联数据,引发错误ProtectedError
  8. - models.SET_NULL,删除关联数据,与之关联的值设置为null(前提FK字段需要设置为可空)
  9. - models.SET_DEFAULT,删除关联数据,与之关联的值设置为默认值(前提FK字段需要设置默认值)
  10. - models.SET,删除关联数据,
  11. a. 与之关联的值设置为指定值,设置:models.SET(值)
  12. b. 与之关联的值设置为可执行对象的返回值,设置:models.SET(可执行对象)
  13.  
  14. def func():
  15. return 10
  16.  
  17. class MyModel(models.Model):
  18. user = models.ForeignKey(
  19. to="User",
  20. to_field="id"
  21. on_delete=models.SET(func),)
  22. related_name=None, # 反向操作时,使用的字段名,用于代替 【表名_set】 如: obj.表名_set.all()
  23. related_query_name=None, # 反向操作时,使用的连接前缀,用于替换【表名】 如: models.UserGroup.objects.filter(表名__字段名=1).values('表名__字段名')
  24. limit_choices_to=None, # 在Admin或ModelForm中显示关联数据时,提供的条件:
  25. # 如:
  26. - limit_choices_to={'nid__gt': 5}
  27. - limit_choices_to=lambda : {'nid__gt': 5}
  28.  
  29. from django.db.models import Q
  30. - limit_choices_to=Q(nid__gt=10)
  31. - limit_choices_to=Q(nid=8) | Q(nid__gt=10)
  32. - limit_choices_to=lambda : Q(Q(nid=8) | Q(nid__gt=10)) & Q(caption='root')
  33. db_constraint=True # 是否在数据库中创建外键约束
  34. parent_link=False # 在Admin中是否显示关联数据
  35.  
  36. OneToOneField(ForeignKey)
  37. to, # 要进行关联的表名
  38. to_field=None # 要关联的表中的字段名称
  39. on_delete=None, # 当删除关联表中的数据时,当前表与其关联的行的行为
  40.  
  41. ###### 对于一对一 ######
  42. # 1. 一对一其实就是 一对多 + 唯一索引
  43. # 2.当两个类之间有继承关系时,默认会创建一个一对一字段
  44. # 如下会在A表中额外增加一个c_ptr_id列且唯一:
  45. class C(models.Model):
  46. nid = models.AutoField(primary_key=True)
  47. part = models.CharField(max_length=12)
  48.  
  49. class A(C):
  50. id = models.AutoField(primary_key=True)
  51. code = models.CharField(max_length=1)
  52.  
  53. ManyToManyField(RelatedField)
  54. to, # 要进行关联的表名
  55. related_name=None, # 反向操作时,使用的字段名,用于代替 【表名_set】 如: obj.表名_set.all()
  56. related_query_name=None, # 反向操作时,使用的连接前缀,用于替换【表名】 如: models.UserGroup.objects.filter(表名__字段名=1).values('表名__字段名')
  57. limit_choices_to=None, # 在Admin或ModelForm中显示关联数据时,提供的条件:
  58. # 如:
  59. - limit_choices_to={'nid__gt': 5}
  60. - limit_choices_to=lambda : {'nid__gt': 5}
  61.  
  62. from django.db.models import Q
  63. - limit_choices_to=Q(nid__gt=10)
  64. - limit_choices_to=Q(nid=8) | Q(nid__gt=10)
  65. - limit_choices_to=lambda : Q(Q(nid=8) | Q(nid__gt=10)) & Q(caption='root')
  66. symmetrical=None, # 仅用于多对多自关联时,symmetrical用于指定内部是否创建反向操作的字段
  67. # 做如下操作时,不同的symmetrical会有不同的可选字段
  68. models.BB.objects.filter(...)
  69.  
  70. # 可选字段有:code, id, m1
  71. class BB(models.Model):
  72.  
  73. code = models.CharField(max_length=12)
  74. m1 = models.ManyToManyField('self',symmetrical=True)
  75.  
  76. # 可选字段有: bb, code, id, m1
  77. class BB(models.Model):
  78.  
  79. code = models.CharField(max_length=12)
  80. m1 = models.ManyToManyField('self',symmetrical=False)
  81.  
  82. through=None, # 自定义第三张表时,使用字段用于指定关系表
  83. through_fields=None, # 自定义第三张表时,使用字段用于指定关系表中那些字段做多对多关系表
  84. from django.db import models
  85.  
  86. class Person(models.Model):
  87. name = models.CharField(max_length=50)
  88.  
  89. class Group(models.Model):
  90. name = models.CharField(max_length=128)
  91. members = models.ManyToManyField(
  92. Person,
  93. through='Membership',
  94. through_fields=('group', 'person'),
  95. )
  96.  
  97. class Membership(models.Model):
  98. group = models.ForeignKey(Group, on_delete=models.CASCADE)
  99. person = models.ForeignKey(Person, on_delete=models.CASCADE)
  100. inviter = models.ForeignKey(
  101. Person,
  102. on_delete=models.CASCADE,
  103. related_name="membership_invites",
  104. )
  105. invite_reason = models.CharField(max_length=64)
  106. db_constraint=True, # 是否在数据库中创建外键约束
  107. db_table=None, # 默认创建第三张表时,数据库中表的名称

五、自关联

  1. class ClassMate(models.Model):
  2. name = models.CharField(
  3. max_length=32,
  4. db_index=True, #创建普通索引
  5. )
  6. cc = models.ManyToManyField("ClassMate",related_name="bb")
  7. def __str__(self):
  8. return self.name
  9. #自己和自己进行多对多联结,例如评论机制

Django 框架 数据库操作2的更多相关文章

  1. Django 框架 数据库操作

    数据库与ORM 1    django默认支持sqlite,mysql, oracle,postgresql数据库.  <1> sqlite django默认使用sqlite的数据库,默认 ...

  2. Django与数据库操作

    Django与数据库操作 数据库连接的方法 web 框架 django --- 自己内部实现 (ORM) + pymysql(连接) Flask,tornado --- pymysql SQLArch ...

  3. Django 2.0 学习(16):Django ORM 数据库操作(下)

    Django ORM数据库操作(下) 一.增加表记录 对于表单有两种方式: # 方式一:实例化对象就是一条表记录france_obj = models.Student(name="海地&qu ...

  4. Django 2.0 学习(14):Django ORM 数据库操作(上)

    Django ORM 数据库操作(上) ORM介绍 映射关系: 数据库表名 ---------->类名:数据库字段 ---------->类属性:数据库表一行数据 ----------&g ...

  5. django models 数据库操作

    django models 数据库操作 创建模型 实例代码如下 from django.db import models class School(models.Model): pass class ...

  6. Django模型-数据库操作

    前言 前边记录的URLconf和Django模板全都是介绍页面展示的东西,也就是表现层的内容.由于Python先天具备简单而强大的数据库查询执行方法,Django 非常适合开发数据库驱动网站. 这篇开 ...

  7. django中数据库操作——in操作符

    django一对多关系中,为了实现按照一端查询多端,之前都是用extra操作符,经过查看官方文档还有in这个操作符,用这个实现更简单.直接上代码: 根据查询条件模糊查询所有符合条件的机架列表,然后根据 ...

  8. django models数据库操作

    一.数据库操作 1.创建model表         基本结构 1 2 3 4 5 6 from django.db import models     class userinfo(models.M ...

  9. 03: Django Model数据库操作

    目录:Django其他篇 01:Django基础篇 02:Django进阶篇 03:Django数据库操作--->Model 04: Form 验证用户数据 & 生成html 05:Mo ...

随机推荐

  1. autolayout 高度自适应

    https://lvwenhan.com/ios/449.html #import "ViewController.h" #import "MyTableViewCell ...

  2. linux的centos如何查看java的安装路径

    https://blog.csdn.net/dannistang/article/details/82906867 使用echo查看文件位置的话,前提是配置安装了环境变量java_home,否则是找不 ...

  3. Hadoop学习之pig

    首先明确pig是解决什么问题而出现的,pig是为了简化mapreduce编程而设计的,并且有自己的一套脚本语言.其基本由命令和操作符来定义的,如load,store,它的功能很明确,用来大规模处理数据 ...

  4. rxjs 常用的管道操作符

    操作符文档 api 列表 do -> tap catch -> catchError switch -> switchAll finally -> finalize map s ...

  5. Python中StringIO和BytesIO

    介绍一下Python在内存中读写数据,用到的模块是StringIO和BytesIO StringIO >>> from io import StringIO >>> ...

  6. F#周报2018年第52期

    新闻 Sudokube--使用Fable开发的数独立方体 Rust 2019年及以后的发展 视频及幻灯片 我爱F#代码 马蒂亚斯·布兰在Developer On Fire上的演讲--有条理的和有趣的 ...

  7. F#周报2018年第48期

    新闻 F#2018年圣诞日历 Mac上的Visual Studio 2017新版本7.7 Rider 2018.3将引入远程调试功能 Visual Studio 2017新版本15.9.3 视频及幻灯 ...

  8. SQL Server 2012 安装过程详解(包含每一步设置的含义)

    转http://www.cnblogs.com/EastLiRoar/p/4051969.html 一.启动安装程序,点击“安装”选项卡,选择“全新SQL Server独立安装或向现有安装添加功能”. ...

  9. python web篇 创建数据库

    python3 manage.py migrate ls sqlite3 使用单文件数据库,管理方便 运行测试 python manage.py runserver 输入http://127.0.0. ...

  10. DRBD数据镜像与搭建

    一.数据安全工具DRDB 1. 数据镜像软件DRDB介绍 分布式块设备复制,是基于软件.基于网络的块复制存储解决方案 作用:用于服务器之间的磁盘.分区.逻辑卷等进行数据镜像. 例如:当用户将数据写入本 ...