1. 配置django使用MySQL数据库
- 在项目要目录下修改settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'crm',
'UsER': 'root',
'PASSWORD': 'qwe123',
'HOST': '127.0.0.1',
'PORT': 3306
}
}
- 修改(编辑)项目文件夹(和settings.py 文件所在的目录)下的__init__.py 文件
import pymysql
pymysql.install_as_MySQLdb()
2. 模型的创建和激活
- 创建 app目录下的models.py
from django.db import models
class Students(models.Model):
name = models.CharField(max_length=16)
age = models.SmallIntegerField(default=0)
sex = models.SmallIntegerField(default=1)
qq = models.CharField(max_length=20, default='')
phone = models.CharField(max_length=20, default='')
create_time = models.DateTimeField(verbose_name='创建时间', auto_now_add=True)
update_time = models.DateTimeField(verbose_name='更新时间', auto_now=True)
def __str__(self):
return 'name: %s, age: %s, sex: %s' % (self.name, self.age, self.sex)
- 激活
2. 运行数据库迁移命令[可以指定哪个app要进行数据库迁移命令]: python manage.py makemigrations [app_name]
3. 执行迁移: python manage.py migrate [app_name] # python manage.py sqlmigrate [app_name] 0001 查看sql语句
3. 使用 (对数据库中表的增删改查)
- 在view.py视图函数中使用
from django.http import HttpResponse
from .models import Students
def add(request):
"""向表中添加数据"""
long1 = Students(name='long', age=18)
long1.save()
long2 = Students()
long2.name = 'long2'
long2.save()
Students.objects.create(name='long3', age=20)
Students.objects.get_or_create(name='long4')
return HttpResponse('add添加数据')
def select(request):
"""向表中查找数据"""
res = Students.objects.get(id=2)
res2 = Students.objects.filter(age=18)
res3 = Students.objects.all()
return HttpResponse('select 查看数据')
def update(request):
"""修改 更新数据"""
res = Students.objects.get(id=3)
res.name = 'new_name'
res.age = 23
res.save()
Students.objects.filter(age=18).update(name='longdongcheng', age=22)
Students.objects.all().update(name='yanyan')
return HttpResponse('update 更新数据')
def delete(request):
Students.objects.get(id=1).delete()
Students.objects.filter(age=0).delete()
Students.objects.all().delete()
return HttpResponse('delete 删除表中的数据')
- 在 python manage.py shell 中使用 # 建议中用ipython,如果安装了ipython, 则默认会使用ipython进入 (# 与在视图中的使用是一模一样的)
(django2.1) pyvip@VIP:~/django_code/orm_model$ python manage.py shell
Python 3.6.6 (default, Sep 12 2018, 18:26:19)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.5.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: from test_model.models import Students
In [2]: long = Students(name='long', age=18)
In [3]: long.save()
In [5]: long2 = Students()
In [6]: long2.name = 'long2'
In [7]: long2.age = 19
In [8]: long2.save()
In [9]: Students.objects.create(name='long3', age=20)
Out[9]: <Students: id: 14, name: long3, age: 20, sex: 1>
In [17]: Students.objects.get_or_create(name='long')
Out[17]: (<Students: id: 12, name: long, age: 18, sex: 1>, False)
In [18]: res = Students.objects.get_or_create(name='long4')
In [19]: res
Out[19]: (<Students: id: 17, name: long4, age: 0, sex: 1>, True)
In [20]: res = Students.objects.all()
In [21]: for i in res:
...: print(i)
...:
id: 12, name: long, age: 18, sex: 1
id: 13, name: long2, age: 19, sex: 1
id: 14, name: long3, age: 20, sex: 1
id: 15, name: long3, age: 20, sex: 1
id: 16, name: long3, age: 20, sex: 1
id: 17, name: long4, age: 0, sex: 1
In [22]:
In [25]: Students.objects.get(id=12)
Out[25]: <Students: id: 12, name: long, age: 18, sex: 1>
In [26]: Students.objects.filter(age=18)
Out[26]: <QuerySet [<Students: id: 12, name: long, age: 18, sex: 1>]>
In [30]: res = Students.objects.filter()
In [31]: for i in res:
...: print(i)
...:
id: 12, name: long, age: 18, sex: 1
id: 13, name: long2, age: 19, sex: 1
id: 14, name: long3, age: 20, sex: 1
id: 15, name: long3, age: 20, sex: 1
id: 16, name: long3, age: 20, sex: 1
id: 17, name: long4, age: 0, sex: 1
In [32]:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步