python manage.py dumpdata blog # 导出blog数据
python manage.py loaddata blog_dump.json # 导入数据
model模型
关系对象映射(Object Relational Mapping,简称ORM),根据代码中定义的类来自动生成数据库表。
1 from django.db import models 2 3 class UserInfo(models.Model): 4 name = models.CharField(max_length=30) 5 sex = models.BooleanField() 6 email = models.EmailField() 7 memo = models.TextField()
models.AutoField 自增列 = int(11) 如果没有的话,默认会生成一个名称为 id 的列,如果要显示的自定义一个自增列,必须将给列设置为主键 primary_key=True。 models.CharField 字符串字段 必须 max_length 参数 models.BooleanField 布尔类型=tinyint(1) 不能为空,Blank=True models.ComaSeparatedIntegerField 用逗号分割的数字=varchar 继承CharField,所以必须 max_lenght 参数 models.DateField 日期类型 date 对于参数,auto_now = True 则每次更新都会更新这个时间;auto_now_add 则只是第一次创建添加,之后的更新不再改变。 models.DateTimeField 日期类型 datetime 同DateField的参数 models.Decimal 十进制小数类型 = decimal 必须指定整数位max_digits和小数位decimal_places models.EmailField 字符串类型(正则表达式邮箱) =varchar 对字符串进行正则表达式 models.FloatField 浮点类型 = double models.IntegerField 整形 models.BigIntegerField 长整形 integer_field_ranges = { 'SmallIntegerField': (-32768, 32767), 'IntegerField': (-2147483648, 2147483647), 'BigIntegerField': (-9223372036854775808, 9223372036854775807), 'PositiveSmallIntegerField': (0, 32767), 'PositiveIntegerField': (0, 2147483647), } models.IPAddressField 字符串类型(ip4正则表达式) models.GenericIPAddressField 字符串类型(ip4和ip6是可选的) 参数protocol可以是:both、ipv4、ipv6 验证时,会根据设置报错 models.NullBooleanField 允许为空的布尔类型 models.PositiveIntegerFiel 正Integer models.PositiveSmallIntegerField 正smallInteger models.SlugField 减号、下划线、字母、数字 models.SmallIntegerField 数字 数据库中的字段有:tinyint、smallint、int、bigint models.TextField 字符串=longtext models.TimeField 时间 HH:MM[:ss[.uuuuuu]] models.URLField 字符串,地址正则表达式 models.BinaryField 二进制 models.ImageField 图片 models.FilePathField 文件
字段参数: null=True 数据库中字段是否可以为空 blank=True django的 Admin 中添加数据时是否可允许空值 primary_key = False 主键,对AutoField设置主键后,就会代替原来的自增 id 列 auto_now 和 auto_now_add auto_now 自动创建---无论添加或修改,都是当前操作的时间 auto_now_add 自动创建---永远是创建时的时间 choices GENDER_CHOICE = ( (u'M', u'Male'), (u'F', u'Female'), ) gender = models.CharField(max_length=2,choices = GENDER_CHOICE) max_length default 默认值 verbose_name Admin中字段的显示名称 name|db_column 数据库中的字段名称 unique=True 不允许重复 db_index = True 数据库索引 editable=True 在Admin里是否可编辑 error_messages=None 错误提示 auto_created=False 自动创建 help_text 在Admin中提示帮助信息 validators=[] upload-to
数据库中表与表之间的关系
一对多, models.ForeignKey(ColorDic) 一对一, models.OneToOneField(OneModel) 多对多, authors = models.ManyToManyField(Author)
增加:创建实例,并调用save 更新:a.获取实例,再sava;b.update(指定列) 删除:a. filter().delete(); b.all().delete() 获取:a. 单个=get(id=1) ;b. 所有 = all() 过滤:filter(name='xxx');filter(name__contains='');(id__in = [1,2,3]) ; icontains(大小写无关的LIKE),startswith和endswith, 还有range(SQLBETWEEN查询)'gt', 'in', 'isnull', 'endswith', 'contains', 'lt', 'startswith', 'iendswith', 'icontains','range', 'istartswith' 排序:order_by("name") =asc ;order_by("-name")=desc 返回第n-m条:第n条[0];前两条[0:2] 指定映射:values 数量:count() 聚合:from django.db.models import Min,Max,Sum objects.all().aggregate(Max('guest_id'))
原始sql
cursor = connection.cursor() cursor.execute('''SELECT DISTINCT first_name ROM people_person WHERE last_name = %s""", ['Lennon']) row = cursor.fetchone()