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 ,自定义错误信息

posted @ 2017-12-24 23:20  未末、、  阅读(186)  评论(0)    收藏  举报