Django 对各种数据库提供了很好的支持,包括:PostgreSQL、MySQL、SQLite、Oracle。
Django 为这些数据库提供了统一的调用API。 我们可以根据自己业务需求选择不同的数据库。
可以使用 pip install mysqlclient
来安装 mysql 驱动
数据库配置
在项目的 settings.py 文件中找到 DATABASES 配置项,将其信息修改为:1
2
3
4
5
6
7
8
9
10DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'test',
'USER': 'root',
'PASSWORD': '0107',
'HOST': 'localhost',
'PORT':'3306',
}
}
定义模型
Django规定,如果要使用模型,必须要创建一个app。我们使用以下命令创建一个 TestModel 的 app:1
python manage.py startapp TestModel
目录结构如下:1
2
3
4
5
6
7HelloWorld
|-- TestModel
| |-- __init__.py
| |-- admin.py
| |-- models.py
| |-- tests.py
| `-- views.py
修改 TestModel/models.py 文件,代码如下:1
2
3
4from django.db import models
class Test(models.Model):
name = models.CharField(max_length=20)
以上的类名代表了数据库表名,且继承了 models.Model ,类里面的字段代表数据表中的字段(name),数据类型则由 CharField(相当于varchar)、DateField(相当于datetime), max_length 参数限定长度。
接下来在 settings.py 中找到 INSTALLED_APPS 这一项,如下:1
2
3
4
5
6
7
8
9INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'TestModel', # 添加此项
)
在命令行中运行1
2
3
4
5python manage.py migrate # 创建表结构
python manage.py makemigrations TestModel # 让 Django 知道我们在我们的模型有一些变更
python manage.py migrate TestModel # 创建表结构
然后在 HelloWorld 目录下添加 testdb.py,代码如下:1
2
3
4
5
6
7from django.http import HttpResponse
from TestModel.models import Test
def testdb(request):
test1 = Test(name='runoob')
test1.save()
return HttpResponse("<p>数据添加成功!</p>")
并且修改 urls.py1
2
3
4
5
6
7from django.conf.urls import *
from . import view,testdb
urlpatterns=[
url(r'^hello', view.hello),
url(r'^testdb', testdb.testdb),
]
访问 http://127.0.0.1:8000/testdb
就可以看到数据添加成功的提示。
获取数据
1 | from django.http import HttpResponse |
更新数据
修改数据可以用 save() 或者 update():1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18from django.http import HttpResponse
from TestModel.models import Test
# 数据库操作
def testdb(request):
# 修改其中一个id=1的name字段,再save,相当于SQL中的UPDATE
test1 = Test.objects.get(id=1)
test1.name = 'Google'
test1.save()
# 另外一种方式
#Test.objects.filter(id=1).update(name='Google')
# 修改所有的列
# Test.objects.all().update(name='Google')
return HttpResponse("<p>修改成功</p>")
删除数据
删除数据库中的对象只需调用该对象的delete()方法即可:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17from django.http import HttpResponse
from TestModel.models import Test
# 数据库操作
def testdb(request):
# 删除id=1的数据
test1 = Test.objects.get(id=1)
test1.delete()
# 另外一种方式
# Test.objects.filter(id=1).delete()
# 删除所有数据
# Test.objects.all().delete()
return HttpResponse("<p>删除成功</p>")