数据库配置

发布于 2019-10-26 17:52:52   阅读量 151  点赞 0  

一、配置连接数据库

  若要要实现后台与数据库的交互,首先要连接数据库。Django连接数据库,不需要单独创建一个连接对象。只需在settings.py文件中做好数据库相关配置即可。示例代码:

DATABASES = {
    'default':{
        # 数据库引擎 (直接修改最后的属性即可)
        'ENGINE':'django.db.backends.mysql',
        # 数据库名字
        'NAME':'Mydb',
        # 连接数据库的用户名
        'USER':'root',
        # 连接数据库的密码
        'PASSWORD':'root',
        # 数据库的主机地址
        'HOST':'127.0.0.1',
        # 数据库的端口号
        'PORT':'3306',
    }
}

二、操作数据库

  Django中操作数据库有两种方法。

1.原生sql语句

  使用python提供的db接口(需先安装对应数据的驱动),只不过Django将数据库连接的部分封装好了,使用的时候只需在settings.py中配置好数据库连接信息,就可以使用Django封装好的接口直接用sql语句进行操作了。示例:

from django.db import connection

# 获取游标对象
cursor = connection.cursor()
# 对游标对象执行sql语句
cursor.execute("select * from book")
# 获取所有数据
rows = cursor.fetchall()
# 遍历获取到的数据
for row in rows:
    print(rows)

以上的execute以及fetchall方法都是Python DB API规范定义好的,任何使用Python操作数据库的驱动都需遵循整个规范。

通过从数据库的连接中获取cursor对象,使用cursor对象来操作数据库。

使用原生sql语句的缺点:

  1. 复用率低
  2. 许多sql语句是在业务逻辑中拼出来的,若数据库需要修改,就需要修改这些逻辑,不利于后期的维护
  3. 写sql时任意忽略web安全问题,带来可能的sql注入。

2.使用ORM模型

  ORM全称Object Relational Mapping,即对象关系映射,ORM使得我们可以使用类的方式操作数据库,将数据库中的表映射成类。ORM在执行对象操作的时候会自动将对应的操作转换为数据库原生语句。

使用ORM模型的优点:

  1. 易用性
  2. 性能损耗小(相比原生sql而已会有少许损耗)
  3. 设计灵活,轻松写出复杂的查询
  4. 可移植性,Django封装了底层的数据库实现,支持多个关系数据库引擎,可以非常轻松地切换数据库。 ##### Ⅰ.ORM模型的创建   ORM模型都是放在app的models.py文件中,数据库中的每张表对应一个类,其中每个类都是model.Model的子类(需从django.db模块中导入models),若要将app的模型映射到数据库中,则该app在settings.py中的INSTALLED_APP中注册过。 示例:
    from django.db import models
    class Book(models.Model):
     name = models.CharField(max_length=20,null=False)
     author = models.CharField(max_length=20,null=False)
     pub_time = models.DateTimeField(default=datetime.now)
     price = models.FloatField(default=0)
    
    其中将表映射成类,将行(每条数据)映射成实例,将字段映射成属性。
Ⅱ.映射模型到数据库
  1. settings.py中,配置好DATABASE,做好相关数据库的配置。
  2. settings.py中的INSTALLED_APP中注册app。
  3. 在app中的models.py中定义好模型。
  4. 进入终端,执行命令python manage.py makemigrations生成迁移脚本文件。
  5. 同样在命令行中,执行命令python manage.py migrate将迁移脚本文件映射到数据库中。

     makemigrations 生成迁移脚本文件;
     migrate 将生成的迁移脚本文件映射到数据库中。
     > 每生成一个模型类都需要migrations
     > 每修改一个模型类都需要migrate
    


Last Modified : 2020-03-09 17:52:52