ORM 简单的增删改查

一、ORM 创建表

1.1 根据类自动创建数据库表
# app下的models.py

from django.db import models

# app01_userinfo
class UserInfo(models.Model):
# id列,自增,主键
# 用户名列,字符串类型,指定长度
  username = models.CharField(max_length=32)
  password = models.CharField(max_length=64)

1.2  注册APP

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app01',
]

1.3 执行命令
python manage.py makemigrations
python manage.py migrate

1.4 ********** 注意 ***********
Django默认使用sqlite

使用MySQLdb模块链接MySQL    修改 DATABASES  配置文件

DATABASES = {

     'default' : {
     'ENGINE' 'django.db.backends.mysql' ,
     'NAME' : 'dbname' ,
     'USER' 'root' ,
     'PASSWORD' 'xxx' ,
     'HOST' : '',
     'PORT' : '',
     }
}

【python 3 不支持直连mysql,需要使用pymsql】
主动修改为pymysql,在project同名文件夹下的__init__文件中添加如下代码即可:
  import pymysql
  pymysql.install_as_MySQLdb()

二、数据操作

def infoadd(request):   ######增
 
    ##方法一
    models.Userinfo.objects.create(username='oracle', password='Ora-666$')
    ##方法二
    dic = {'username': 'hw_admin','password': 'suse'}
    models.Userinfo.objects.create(**dic)
    ##方法三
    obj = models.Userinfo(username='os_admin', password='Ngwlw@2017!')
    obj.save()
    return HttpResponse("addinfo success")

  

def infodel(request):    ##删
    models.Userinfo.objects.filter(username='root').delete()
    return HttpResponse("delete success")

  

def infoupd(request):    ##改
    # models.Userinfo.objects.all().update(password='Ora-666$')
    models.Userinfo.objects.filter(username='oracle').update(id=5)
    return HttpResponse("undate success")

  

def infosel(request):     ##查询
    ##all
    # result =  models.Userinfo.objects.all()
    ##filter
    result = models.Userinfo.objects.filter(username='root')
    print(result)
    for row in result:
     print(row.id,row.username,row.password)
    return HttpResponse("select success")



  v1 = models.Userinfo.objects.all()
  # QuerySet ,内部元素都是对象

  # QuerySet ,内部元素都是字典
  v2 = models.Userinfo.objects.all().values('id','caption')
  # QuerySet ,内部元素都是元组
  v3 = models.Userinfo.objects.all().values_list('id','caption')

  # 获取到的一个对象,如果不存在就报错
  models.Userinfo.objects.get(id=1)
  对象或者None = models.Userinfo.objects.filter(id=1).first()       --推荐

  --values      **对应的是字典
--values_list **对应的是元组

  

三、字段参数

自增(primary_key=True)

字段的参数:
null -> db是否可以为空
default -> 默认值
primary_key -> 主键
db_column -> 列名
db_index -> 索引
unique -> 唯一索引
unique_for_date ->
unique_for_month
unique_for_year
auto_now -> 创建时,自动生成时间
auto_now_add -> 更新时,自动更新为当前时间

# obj = UserGroup.objects.filter(id=1).update(caption='CEO')
# obj = UserGroup.objects.filter(id=1).first()
# obj.caption = "CEO"
# obj.save()

choices -> django admin中显示下拉框,避免连表查询
blank -> django admin是否可以为空
verbose_name -> django admin显示字段中文
editable -> django admin是否可以被编辑
error_messages -> 错误信息
help_text -> django admin提示
validators -> django form ,自定义错误信息

转载于:https://www.cnblogs.com/jhon-018/p/8099753.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值