django基础 第五章 Django连接数据库

第五章 Django连接数据库

1 连接配置

django 连接mysql的配置流程:

  • 安装 pymysql pip install pymysql

  • 创建数据库用户(有创建数据库权限)

  • 创建数据库

  • 修改配置settings

  • 修改项目文件夹(和settings.py文件所在的目录)下__init__.py 文件
    写上:

    import pymysql
    pymysql.install_as_MySQLdb()
  • 设置时区 TIME_ZONE = 'Asia/ShangHai' # 北京时间

2 django的ORM系统

ORM概念:对象关系映射(Object Relational Mapping,简称ORM)

ORM的优势:不用直接编写SQL代码,只需像操作对象一样从数据库操作数据。

django模型映射关系:

模型类必须都写在app下的models.py文件中。

模型如果需要映射到数据库,所在的app必须被安装.

一个数据表对应一个模型类,表中的字段,对应模型中的类属性.

2 模型的创建与激活

创建模型
​ 每一个模型都是django.db.models.Model的子类

​ 类变量 表示模型中的数据库字段

​ 每一个字段由一个字段类的实例表示

激活模型
项目中注册app
在settings.py中配置DATABASES

运行数据库迁移命令(一定要在项目根目录下)

python mange.py makemigrations teacher  # 将模型类映射到数据库(其中teacher为指定映射,不写默认全部映射)
python manage.py migrate   # 将映射文件中的映射数据提交到数据库中


打开数据我们能看到创建的以app名_模型名的数据表,而其他的一些表格是django自动生成的.

注意:如果要删除表,那么可以去django模型中注释掉模型类,然后执行映射的命令,不要手动在命令行里面去删除.

4.数据的增删改查

-工具 django shell 调试

python manage.py shell

from movie.models import Movie # movie为app名,Movie为模型类
def add_date(request):
    # 方法一
    movie_1 = Movie(name="情圣", time=2010)  # 模型类的实例
    movie_1.save()
    # 方法二
    movie_2 = Movie()
    movie_2.name = '毒液'
    movie_3.time = 2016
    # 方法三
    Movie.objects.create(name="贞子", time=2001)
    # 方法四
    Movie.object.get_or_create(name="赌圣", time=2004)
    return HttpResponse('插入数据')

def delete_date(request):
    # 条件删除
    Movie.objects.get(time=2010).delete()
    Movie.objects.filter(name="情圣")。delete()
    # 全删除
    Movie.objects.all().delete()
    return HttpResponse('删除成功')

def update_date(request):
    # 方法一:先查找对象后修改
    rs = Movie.objects.get(name="赌圣")
    rs.name = '赌圣2'
    rs.save()
    # 方法二:直接修改
    Movie.objects.filter(name="赌圣").update(name="赌圣2")
    
    # 全部修改
    Movie.objects.all().update(time=2010)
    return HttpResponse('修改成功')

all()和filter()方法返回的是QuerySet对象.

get()方式返回的单个对象,如果符合条件的对象有多个,则get报错!

def search_date(request):
    # 查询所有数据对象
    re = Movie.objects.all()
    # 查询一个数据对象
    re = Movie.objects.get(time=2001)    
    # 查询满足条件的对象
    re = Movie.objects.filter(name="情圣")
    print(re)
    return HttpResponse('查询成功')

猜你喜欢

转载自www.cnblogs.com/xjl-dwy/p/10432546.html