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