• Django开发基础--操作数据库


    Django中对数据库的操作是由Models来完成的

    Models是什么?

    通常,一个Model对应数据库的一张数据表

    Django中Models以的形式出现

    它包含了一些基本字段以及数据的一些行为

    所以,在Django中所有对数据库的操作,就是对Models中的类以及类的对象的操作,不需要写任何SQL语句来和数据库进行直接的交互。

    编写Models步骤:

    1、在应用根目录下创建models.py,并引入models模块

    2、创建类,继承models.Model,该类即是一张数据表

    3、在类中创建字段

    字段创建:

    1、数据表里的字段其实就是models.py中类的属性(变量)

    例如:    name = models.CharField(max_length=100) # 发布会标题

    Django中主要的数据类型:

    编写完Models,怎么把类同步到数据库,生成数据表呢?

    1、命令行中进入manage.py的同级目录

    2、执行 python3 manage.py makemigrations app名(sign)(可选,如果不指定应用名,默认是该项目下的所有应用)

    3、再执行 python3 manage.py migrate,完成数据迁移

    完成数据迁移后,Django会自动在sign/migrations目录下生成移植文件

    执行python3 manage.py sqlmigrate 应用名 文件id(0001) 查看SQL语句.

    一、使用MySQL数据库:

    Django 默认使用自带的sqlite3数据库,对各种数据库提供了很好的支持,包括:PostgreSQL、MySQL、SQLite、Oracle。

    Django 为这些数据库提供了统一的调用API。 我们可以根据自己业务需求选择不同的数据库。

    MySQL 是 Web 应用中最常用的数据库

    使用MySQL数据库步骤

    1、如果使用的 Python2.x 版本,那么连接 MySQL 数据库可以使用 MySQL-python。 但是,MySQL-python 只支持 Python2.x 版本,并在 2014 年 1 月之后就不再更新了,但这并不影响对该库的使 用。目前 Django 默认使用的是该驱动。如果使用的是 Python3.x 版本的 Django,所以这里推荐使用 PyMySQL 驱动。

    命令:python3 -m pip install PyMySQL

    因为 Django 在连接 MySQL 数据库时默认使用的是 MySQLdb 驱动,我们现在安装的是 PyMySQL 驱动,如何让 Django 通过 PyMySQL 来 连接 MySQL 数据库呢?在.../guest/__init__.py 目录下添加:

    import pymysql

    pymysql.install_as_MySQLdb()

    2、setting.py文件中配置MySQL数据库

    注意:切换了数据库后,之前 Sqlite3 数据库里的数据并不能复制到 MySQL 中,所以需要重新进行数据库同步,使数据模型重新在 MySQL 数据库中生成表。

    执行 python3 manage.py migrate

    二、视图层Views进行数据库的增、删、改、查

    在原项目中再新建一个应用contral,记得在settings中添加此应用

    1、创建model表

    2、生成相应的表
    python manage.py makemigrations
    python manage.py migrate 
    3、admin后台注册表

    并添加数据

    数据进行增删改查的代码:
    UserInfo.objects.all()
    UserInfo.objects.all().values('user')        #只取user列
    UserInfo.objects.get(id=1)      #取出id为1的数据
    UserInfo.objects.all().values_list('id','user')    #取出id和user列,并生成一个列表
    UserInfo.objects.get(user='Jia')  
    查找数据
    4、配置url

    5、编写views

    6.html代码

    7、成功获取数据

    增加数据

    models.UserInfo.objects.create(user='tswn',pwd='12345')
    或者
    obj = models.UserInfo(user='tswn',pwd='12345')
    obj.save()
    或者
    dic = {'user':'tswn',pwd='12345')}
    models.UserInfo.objects.create(**dic)

    删除数据

    改数据

    UserInfo.objects.filter(user='Jia').update(pwd='520')
    或者
    obj = UserInfo.objects.get(user='Jia')
    obj.pwd = '520'
    obj.save()

  • 相关阅读:
    面试基础知识文档
    敏捷式开发
    redis总结
    自我介绍的问题
    面试2
    唐巧的iOS技术博客选摘
    IOS开发中滑动页面时NSTimer停止的问题
    iOS多线程GCD(转)
    iOS 用instancetype代替id作返回类型有什么好处?
    C语言中全局变量、局部变量、静态全局变量、静态局部变量的区别 (转)
  • 原文地址:https://www.cnblogs.com/ailiailan/p/8485215.html
Copyright © 2020-2023  润新知