#Django默认连接的是“sqlite”数据库
1.首先MySQL上创建好数据库
2.修改Django中settings.py中的DATABASES及INSTALLED_APPS将你的app名字加到末尾(注册app)
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': '你的数据库名称', 'USER': '你的DB用户名', 'PASSWORD': '你的DB密码', 'HOST': '你的mysql地址', 'PORT': '3306', } }
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app01',
]
3.修改Django的project同名目录中__init__.py文件
import pymysql
pymysql.install_as_MySQLdb()
#重启project;现在Django连接数据库的方式改为MySQL
#通过ORM创建表
#在app中models.py创建类(nid类可以不写,系统会自动创建名为id的自增主键列)
from django.db import models class UserInfo(models.Model): nid = models.BigAutoField(primary_key=True) username = models.CharField(max_length=32) password = models.CharField(max_length=64)
#创建完类和注册app之后执行命令将类通过ORM转化成SQL命令写入到数据库中
python manage.py makemigrations
python manage.py migrate
#执行成功后刷新数据库可看到生成的新的数据表(app01_userinfo是通过类创建的,其他是系统自动创建的)
#增加列
#类中添加数据表的列名和类型(后面可以写(null=True)允许为空或指定默认值)
#修改列名直接改类中的列名然后执行命令 age = models.IntegerField(default=1) #执行命令 python manage.py makemigrations python manage.py migrate
#添加外键
class UserGroup(models.Model): title = models.CharField(max_length=32) class UserInfo(models.Model): nid = models.BigAutoField(primary_key=True) username = models.CharField(max_length=32) password = models.CharField(max_length=64) age = models.IntegerField(default=1) ug = models.ForeignKey("UserGroup",on_delete=models.CASCADE,null=True)
#ORM会在数据库中创建一个列名“ug_id”的列
#数据表信息操作
#插入数据
from app01 import models def index(request): #向UserGroup表中添加数据 models.UserGroup.objects.create(title='销售部') return HttpResponse('数据库操作...')
#访问url,调用index
http://127.0.0.1:8000/app01/index.html
#也可以往用户表里插入数据
models.UserInfo.objects.create(username='root',password='pwd',age=18,ug_id=1)
#查询表里数据
group_list = models.UserGroup.objects.all()
print(group_list)
#控制台会输入如下信息
<QuerySet [<UserGroup: UserGroup object (1)>]>
#在ORM中类代指的是表,对象代指的一行数据(因为表中只有一条数据,所以列表中有一个对象信息)
#条件查询
#查询ID等于2的部门
group_list = models.UserGroup.objects.filter(id__exact=2)
比较查询 exact:表示判等。 gt 大于 gte 大于等于 lt 小于 lte 小于等于 范围查询 in:是否包含在范围内。
#修改数据(修改UserGroup表中id=1的title信息改为"公关部")
models.UserGroup.objects.filter(id=1).update(title="公关部")
#删除数据(删除UserGroup表中id=4的信息)
models.UserGroup.objects.filter(id=4).delete()
* 参考oldboy视频整理