- dbfirst:数据库优先
- codefirst(ORM):代码优先,sqlalchemy和DJango都是用的这种
创建表
a.在app下的models.py中,创建类
from django.db import models class UserInfo(models.Model): #django会默认为我们生成一个自增且是主键的id列 uid = models.AutoField(primary_key=True) #当然也可以自己写,必须要这样写 username = models.CharField(max_length=32) # 用户名列,字符串类型,指定长度 password = models.CharField(max_length=64)
b.注册app(在settings下的INSTALLED_APPS中将app的名字添加进路径)
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'app01', ]
c.执行命令
python manage.py makemigrations python manage.py migrate
Django连接mysql
Django默认使用MySQLdb模块链接MySQL但MySQLdb只支持到python2.7,所以要进行以下操作
settings.py DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME':'dbname', 'USER': 'root', 'PASSWORD': 'xxx', 'HOST': '', 'PORT': '', } } 如下设置放置的与project同名的配置的__init__.py文件中 import pymysql pymysql.install_as_MySQLdb()
字段
- 字符串类型
- 数字类型
- 时间类型
- 二进制类型
字段的参数
a.数据库部分
null 数据库中字段是否可以为空 email = models.CharField(max_length=60,null=True) db_column 数据库中字段的列名 email = models.CharField(max_length=60,db_column='e-mail') default 数据库中字段的默认值 email = models.CharField(max_length=60,default='alex3714@163.com') primary_key 数据库中字段是否为主键 uid = models.AutoField(primary_key=True) #AutoField 自增
db_index 数据库中字段是否可以建立索引 unique 数据库中字段是否可以建立唯一索引 unique_for_date 数据库中字段【日期】部分是否可以建立唯一索引 unique_for_month 数据库中字段【月】部分是否可以建立唯一索引 unique_for_year 数据库中字段【年】部分是否可以建立唯一索引
auto_now 创建时自动生成当前时间 uptime = models.DateTimeField(auto_now=True, null=True) auto_now_add 更新时,自动更新为当前时间 ctime = models.DateTimeField(auto_now_add=True, null=True) obj = UserGroup.objects.filter(id=1).update(caption='CEO') #使用这种方式更新时不能记录 obj = UserGroup.objects.filter(id=1).first() obj.caption = "CEO" obj.save()
b.admin/modelform部分
verbose_name Admin中显示的字段名称 blank Admin中是否允许用户输入为空 editable Admin中是否可以编辑 help_text Admin中该字段的提示信息 choices Admin中显示选择框的内容,用不变动的数据放在内存中从而避免跨表操作 如:gf = models.IntegerField(choices=[(0, '何穗'),(1, '大表姐'),],default=1) error_messages 先pass,自定义错误信息(字典类型),从而定制想要显示的错误信息; 字典键:null, blank, invalid, invalid_choice, unique, and unique_for_date 如:{'null': "不能为空.", 'invalid': '格式错误'} validators pass
#小tips:数据库中的EmailField,URLFiled等是给admin用的
1 from django.db import models 2 3 # Create your models here. 4 5 class UserInfo(models.Model): 6 username = models.CharField(max_length=32, verbose_name='用户名') # 用户名列,字符串类型,指定长度 7 password = models.CharField(max_length=60, help_text='pwd') 8 email = models.CharField(max_length=60,null=True,blank=True) 9 test = models.EmailField(max_length=19, null=True) 10 text = models.CharField(max_length=20,null=True,editable=False)