django之连接操作mysql
django连接数据库,主要是在settings.py文件中,通过DATABASES项进行数据库配置
django支持的数据库包括sqlite,mysql等主流数据库
django默认使用SQLite数据库
本文主要讲解mysql的配置连接以及操作
1,连接数据库,配置settings.py
DATABASES = {
‘default’: {
‘ENGINE’: ‘django.db.backends.mysql’,
‘NAME’: ‘test2’,
‘USER’:‘root’,
‘PASSWORD’:‘123456’,
‘PORT’:‘3306’,
‘HOST’:‘localhost’,
}
}
NAME:需要连接的数据库名称
USER:用户名
PASSWORD:密码
PORT:端口,mysql默认3306
这时已经可以连接mysql,但是有时会报错Error loading MySQLdb module
这个是因为py2和py3有差异的原因。
只需要在你新建的应用里的__init__.py文件里加入这样两行代码:
import pymysql
pymysql.install_as_MySQLdb()
具体想知道什么原因导致错误可以参见我的另一篇博客关于django连接mysql报错Error loading MySQLdb module的问题
连接mysql之后,就是要对数据库进行操作了
2,对数据库的增删查改
在这里拿我自己的项目来说,之前我已经定义了models.py写了一个测试类
然后python manage.py makemigrations生成迁移,python manage.py migrate执行迁移,数据库生成了这样一些表
在我们的views.py文件里,操作数据库
from .models import StuInfo
查询数据
def query(request):
messages = StuInfo.objects.all()
#messages = StuInfo.objects.get(pk=1)
#messages = StuInfo.objects.filter(name='xx',id='1')
for i in messages:
print(i.name)
return render(request,'xxx.html',{'user':messages})
render的第三个参数以json的形式将messages数据传给xxx.html页面,可以在html页面通过{{ user.name }}取出数据库里的用户的姓名
插入数据
def insert(request):
models.StuInfo.objects.create(
name='xxx',
gender='xxx',
sno='xxx',
score='xxx',
)
return render(request,'xxx.html')
或
def insert(request):
user = UserInfo()
user.name='xxx'
user.gender='xxx'
user.sno='xxx'
user.score='xxx'
user.save()
return render(request,'xxx.html')
删除数据
def delete(request):
user= StuInfo.objects.get(name='xxx')
user.delete()
return render(request,'xxx.html')
修改数据
修改数据其实就是先查询,然后再修改属性值
def mod(request):
user= StuInfo.objects.get(name='xxx')
user.name='zzz'
user.save()
return render(request,'xxx.html')