版本:
django:1.11.9
python3
首先需要安装一些库:mysqldb、pymysql、mysqlclient。django会提示安装MySQLdb,这个玩意python3 已经不支持了。
在setting.py里添加database相关信息:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mysite',
'HOST':'',
'PORT':'3306',
'USER':'root',
'PASSWORD':'123',
}
}
然后创建一个文件叫models.py,存储数据模型
from django.db import models
# Create your models here.
class Publisher(models.Model):
pub_name=models.CharField(max_length=200)
city=models.CharField(max_length=200)
class Book(models.Model):
book_name = models.CharField(max_length=200)
author = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
publish = models.ForeignKey(Publisher, on_delete=models.CASCADE)
class META:
ordering=('publish')
#正序排列
ordering-('-publish')
#倒叙排列
db_table='UserRecord'
#表名
其中可以使用meta来定义表名啥的:
class Meta(object):
# 定义表名
db_table = "department"
# 定义在管理后台显示的名称
verbose_name = '部门'
# 定义复数时的名称(去除复数的s)
verbose_name_plural = verbose_name
在mysql中生成表格的命令:
python manage.py makemigrations
python manage.py migrate
增删改查
查
models.UserInfo.objects.all()
models.UserInfo.objects.all().values('user') #只取user列
models.UserInfo.objects.all().values_list('id','user') #取出id和user列,并生成一个列表
models.UserInfo.objects.get(id=1)
models.UserInfo.objects.get(user='yangmv')
增
models.UserInfo.objects.create(user='yangmv',pwd='123456')
或者
obj = models.UserInfo(user='yangmv',pwd='123456')
obj.save()
或者
dic = {'user':'yangmv','pwd':'123456'}
models.UserInfo.objects.create(**dic)
删
models.UserInfo.objects.filter(user='yangmv').delete()
改
models.UserInfo.objects.filter(user='yangmv').update(pwd='520')
或者
obj = models.UserInfo.objects.get(user='yangmv')
obj.pwd = '520'
obj.save()
常用字段:
models.DateTimeField 日期类型 datetime
参数,
auto_now = True :则每次更新都会更新这个时间
auto_now_add 则只是第一次创建添加,之后的更新不再改变。
在python 的setting中药修改时区信息。
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
如果最后依旧查8个小时,可以
USE_TZ = False
models.GenericIPAddressField IP
ip = models.GenericIPAddressField(protocol="ipv4",null=True,blank=True)
连表结构
- 一对多:models.ForeignKey(其他表)
- 多对多:models.ManyToManyField(其他表)
- 一对一:models.OneToOneField(其他表)