django连接mysql查询获取数据_Django链接MySQL及数据操
作
Django 链接MySQL
Django创建的项⽬⾃带的数据库是SQLite3,我们想要链接MySQL的话,需要更改settings.py中的配置
1.在MySQL中创建好数据库,Django项⽬不会创建数据库,只会根据models.py中的模型类创建对应的表
2.在项⽬⽂件下的settings.py⽂件中,到 DATABASES属性,配置MySQL相关参数
DATABASES = {
'default': {
# 将数据库引擎修改成 mysql
'ENGINE': 'django.sql',
# 数据库名称
'NAME': 'django_test',
# 数据库所在的主机地址
'HOST': '127.0.0.1',
# MySQL服务的端⼝号
'PORT': 3306,
'USER': 'root',
'PASSWORD': 'Ad123',
'CHARSET': 'utf8'
}
}
3.到项⽬⽂件下或app(应⽤程序)下的__init__.py 配置成MySQL
注意:重点!重点!重点!
import pymysql
# 将数据库引擎调整为MySQL
pymysql.install_as_MySQLdb()
4.在对应的app(应⽤程序)下的 models.py ⽂件中编写数据库表对应的类
from django.db import models
# 模型类都需要继承 models.Model 类
class Book(models.Model):
# AutoField 表⽰是int数据类型,auto_increment⾃增长列,primary_key 表⽰主键
b_id = models.AutoField(primary_key=True)
# CharField 表⽰varchar数据类型,必须给 max_length 赋值,表⽰字符长度
book_name = models.CharField(max_length=64)
# IntegerField 表⽰int数据类型, default 表⽰默认值
book_price = models.IntegerField(default=0)
这⾥运⽤的就是ORM对象关系映射
ORM(Object Relational Mapping) 对象关系映射:通过使⽤描述对象和数据库之间映射的⽅式,将⾯向对象语⾔程序中的对象⾃动持久化到关系数据库中。
本质上就是将数据从⼀种形式转换到另外⼀种形式,通俗来讲,能够让⼀个不会数据库操作的⼩⽩也能通过Python⾯向对象语法,句点符(对象.属性)来简单快捷的操作数据
Python
MySQL
类(class)
数据表(table)
对象(object)
记录(数据表中的⼀⾏记录)
属性(attribute)
表字段(column)
5.在cmd或pycharm中的Terminal窗⼝执⾏数据库迁移(同步)命令
注意:重点!重点!重点!
# python3 是python解释器名称
# 将对数据库的操作记录到项⽬中的migrations⽂件夹下的⽂件中,此时并没有同步到到数据库
python3 manage.py makemigrations
# 将对数据库的操作同步到MySQL中
python3 manage.py migrate
⼀定要在对应的项⽬⽂件下执⾏这两条命令
这两条命令⼀般情况下,是成对出现的,缺⼀不可
在开发过程中,只要修改了models.py 中跟数据库相关的代码,就必须重新执⾏这两命令,以保证数据库中的记录跟models.py中⼀致
book_obj = res.first() # 取第⼀条记录
注意:filter⽅法如果没有获取到结果,不会报错,返回的是⼀个空列表
models.类名.objects.all() 查询所有
# 等同于 select * from book
# 返回值是⼀个列表,⽀持索引,但不⽀持负索引
res = models.Book.objects.all()
2.数据操作-增加
类.ate()
# create() 有返回值,是当前被创建的对象本⾝
book_obj = ate(book_name='Django⼊门', book_price=1234) # 打印创建的对象, 对象的book_name 属性
print(book_obj, book_obj.book_name)
创建对象,通过对象.save()
# 创建Book 对象
book_obj = Book(book_name='redis⼊门', book_price=4321)
# 通过对象.save()⽅法增加记录
book_obj.save()
3.数据操作-删除
mysql下载链接'''
1.先查询出结果,
2.通过delete() 删除
'''
# sql语句:delete from book where b_id=2;
models.Book.objects.filter(b_id=2).delete()
# 由于filter() 的返回值是⼀个列表,这个⽅式相当于是批量删除,不建议删除记录4.数据操作-修改
批量更新(推荐使⽤该⽅法)
'''
1.先查询出结果
2.通过update() 更新
'''
# sql语句:update book set book_name='aa', book_price=2314 where b_id=3; models.Book.objects.filter(b_id=3).update(book_name='aa',book_price=2314) # 由于filter() 的返回值是⼀个列表,这个⽅式相当于是批量修改
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论