官网数据库文档

image.png
支持的数据库
https://docs.djangoproject.com/zh-hans/3.2/ref/databases/
django2.2支持MySQL5.6+的版本
image.png

MySQL驱动程序安装

我们使用Django来操作MySQL,实际上底层还是通过Python来操作的。因此我们想要用Django来操作MySQL,首先还是需要安装一个驱动程序。在Python3中,驱动程序有多种选择。比如有pymysql以及mysqlclient等。这里我们就使用mysqlclient来操作。mysqlclient安装非常简单。只需要通过pip install mysqlclient即可安装。

常见MySQL驱动介绍:

  1. MySQL-python:也就是MySQLdb。是对C语言操作MySQL数据库的一个简单封装。遵循了Python DB API v2
    但是只支持Python2,目前还不支持Python3。
  2. mysqlclient:是MySQL-python的另外一个分支。支持Python3 并且修复了一些bug。
  3. pymysql:纯Python实现的一个驱动。因为是纯Python编写的,因此执行效率不如MySQL-python。并且也因为是纯Python编写的,因此可以和Python代码无缝衔接。
  4. MySQL Connector/Python:MySQL官方推出的使用纯Python连接MySQL的驱动。因为是纯Python开发的。效率不高。

    创建数据库

    可视化工具Navicat
    image.png

    配置django

    settings.py
    1. DATABASES = {
    2. 'default': {
    3. # 引擎
    4. 'ENGINE': 'django.db.backends.mysql',
    5. # 数据库的名字
    6. 'NAME': 'django_db1',
    7. # 用户名
    8. 'USER': 'root',
    9. # 密码
    10. 'PASSWORD': 'root',
    11. # 地址
    12. 'HOST': '127.0.0.1',
    13. # 端口号
    14. 'PORT': 3306
    15. }
    16. }

    初始化数据库

    Pycharm工具
    python manage.py makemigrations
    python manage.py migrate

    其它数据库连接方式

    添加数据

    image.png

    原生SQL

    django

    依赖Django配置 ```python from django.shortcuts import render, redirect, reverse from django.http import HttpResponse from django.db import connection # mysqlclient

def index(request):

  1. # django中的connection连接数据库
  2. # 获取游标对象
  3. cursor = connection.cursor()
  4. # 不会把查询结果直接返回
  5. cursor.execute("select * from book")
  6. print(cursor.rowcount) # 2
  7. # data = cursor.fetchone() # (1, 'Python从入门到入佛')
  8. datas = cursor.fetchall() # ((1, 'Python从入门到入佛'), (2, 'Python从入门到入灭'))
  9. print(datas)
  10. cursor.close()
  11. connection.close()
  12. return HttpResponse("首页")
  1. <a name="dML2M"></a>
  2. #### pymysql
  3. 好处是可以操作多个数据库<br />`pip install pymysql`
  4. ```python
  5. from django.shortcuts import render, redirect, reverse
  6. from django.http import HttpResponse
  7. from pymysql import connect
  8. def index(request):
  9. # pymysql连接数据库
  10. conn = connect(host='127.0.0.1', port=3306, database='django_db2', user='root', password='root', charset='utf8')
  11. cursor = conn.cursor()
  12. # 不会把查询结果直接返回
  13. cursor.execute("select * from book")
  14. print(cursor.rowcount) # 2
  15. # data = cursor.fetchone() # (1, 'Python从入门到入佛')
  16. datas = cursor.fetchall() # ((1, 'Python从入门到入佛'), (2, 'Python从入门到入灭'))
  17. print(datas)
  18. cursor.close()
  19. conn.close()
  20. return HttpResponse("首页")