Django-models详解

2016年7月22日08:27:09 发表评论 46,182

django数据库部分操作


django1.9 新建或修改models 需要执行数据同步

%ignore_pre_1%

django manage命令用途
migrate用于执行迁移动作
makemigrations基于当前的model创建新的迁移策略文件
sqlmigrate显示迁移的SQL语句 manage.py sqlmigrate APP migrate
createsuperuser为后台创建一个管理员
changepassword修改后台管理员密码
dumpdata导出数据
loaddata导入数据
shelldjango项目环境终端
dbshellsetting中配置的数据库客户端模式
在admin后台增加一个可操作表单

%ignore_pre_2%

在后台可以显示用户名为key的信息

%ignore_pre_3%

在models里直接操作存储字符

%ignore_pre_4%

设置数据的表名 默认是 APPname + classname

%ignore_pre_5%

设置默认排序方式

%ignore_pre_6%

django的sql操作

> insert 语句:
平台命令
pythonp1 = modelsname(列1=’xx’, 列2=’xx’) p1.save()
sqlinsert into modelsname (1, 2) value (‘xx’, ‘xx’)
> select*以及条件语句:
平台命令
作用select * 表全部数据
pythonmodelsname.objects.all()
sqlselect * from modelsname
作用select where 表中符合条件的数据
pythonmodelsname.objects.filter(name=’Apress’, name2=’abc’)
sqlselect * from modelsname where name=’Apress’ and name2=’abc’
作用以字段排序
pythonmodelsname.objects.order_by(“name”)
sqlselect * from modelsname order by name
作用以字段倒序
pythonmodelsname.objects.order_by(“-name”)
sqlselect * from modelsname order by name desc
作用符合条件的数据 并且执行排序
pythonmodelsname.objects.filter(country=”U.S.A.”).order_by(“name”)
sqlselect * from modelsname where country=”U.S.A.” order by name
作用限制返回的数量
pythonmodelsname.objects.all()[0]
sqlselect * from modelsname limit 1
> update语句:
平台命令
pythonmodelsname.objects.filter(id=52).update(name=’Apress Publishing’)
sqlupdate modelsname set name=’Apress Publishing’ where id=52
作用批量更新
pythonmodelsname.objects.all().update(country=’USA’)
sql不会写。。。反正就是数据库里所有的country都update成usa
> delete语句:
平台命令
pythonmodelsname.objects.filter(country=’USA’).delete()
sqldelete from modelsname where country=’USA’
> like语句:
命令作用
__exact完全匹配
pyuser.objects.filter(username__exact=’xiaobai’,password__exact=’xiaobai@.com’)
sqlselect * from user where name like ‘xiaobai’ and password like ‘xiaobai@.com’
__contains包含匹配
pyuser.objects.filter(username__contains=’xiaobai’,password__contains=’xiaobai@.com’)
sqlselect * from user where name like ‘%xiaobai%’ and password like ‘%xiaobai@.com%’
__iexact忽略大小写like ilike “xxx”
> 判断语句
语句作用
__gt大于
__gte大于等于
__lt小于
__lte小于等于
__in存在于一个list范围内
__stARtswith以…开头
__istARtswith以…开头 忽略大小写
__endswith以…结尾
__iendswith以…结尾,忽略大小写
__range在…范围内
> Models 数据类型
类型作用
models.ChARField字符 vARchAR 必须 max_length 参数
models.integerField整形 int
models.BigintegerField长整形
models.DateField日期类型 date
models.TextField长字符类型 text
models.EmailField邮箱类型

makemigrations 报错

You ARe trying to add a non-nullable field ‘name5’ to ttttt without a default; we can’t do that (the database needs something to populate existing rows).
Please select a fix:

  1. Provide a one-off default now (will be set on all existing rows)
  2. Quit, and let me add a default in models.py

是因为在增加字段的时候 没有写字段默认值
选择1 可以在下面的输入框写一个默认值
选择2 退出 重新修改models.py 在后面写一个default=’xxx’

版权属于:
小白的运维站

原文地址:
http://www.52yunwei.cn/?p=1444

转载时必须以链接形式注明原始出处及本声明。




该文章由WP-AutoPost插件自动采集发布

原文地址:http://www.52yunwei.cn/?p=1444

weinxin
我的微信
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: