• [Django] 数据库驱动


    参考链接:

    1. Django 连接MySQL的驱动设置

      对于在Django 中连接MySQL 的驱动,有以下三种:

      1. mysqlclient
      2. mysql-connector-pythom
      3. pymysql (建议:这个包已经有一年未升级了,本人不建议使用)。
    2. python3应该用pymysql还是mysqlclient?两者有什么区别?

      There are currently a few options for using Python 3 with mysql:

      • mysql-connector-python
        Officially supported by Oracle
        Pure python
        A little slow
        Not compatible with MySQLdb
      • pymysql
        Pure python
        Faster than mysql-connector
        Almost completely compatible with MySQLdb, after calling pymysql.install_as_MySQLdb()
      • cymysql
        fork of pymysql with optional C speedups
      • mysqlclient
        Django's recommended library
        Friendly fork of the original MySQLdb, hopes to merge back some day
        The fastest implementation, as it is C based
        most compatible with MySQLdb, as it is a forkDebian and Ubuntu use it to provide both python-mysqldb andpython3-mysqldb packages.

    环境介绍

    Django3.2 + mysql5.7.35

    mysqlclient

    安装的时候需要安装前置库或mysql,生产环境部署困难,弃之

    For Red Hat
    sudo yum install python3-devel mysql-devel
    pip install mysqlclient
    For Debian
    sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
    pip install mysqlclient

    pymysql

    (大概50%的概率)报错ModuleNotFoundError at XXXXX,提示:No module named 'MySQLdb.connections'
    网上的教程说是在__init__.pysettings.pymanage.py里写入:

    import pymysql
    pymysql.install_as_MySQLdb()
    

    但是不论在哪里写都有这样的报错(发生位置不一样),弃之

    mysql-connector-python

    官方文档

    1. settings.py里更新DATABASE的设置:
      DATABASES = {
          'default': {
              'ENGINE': 'mysql.connector.django', # 旧为'django.db.backends.mysql'
              'NAME': 'controller',
              'USER': 'root',
              'PASSWORD': 'nbc@mux_dev',
              'OPTIONS': {                        # 新增字段'OPTIONS'
                  'autocommit': True,             # 官网里有的字段,不知道啥用
                  'use_pure': True,               # 报错TypeError,搜了下,加上这个就好使了
              },
              'HOST': '10.12.198.243',
              'PORT': '3316'
          }
      }
      
    2. pip安装mysql-connector-python,卸载另外俩,目前能稳定运行

    报错记录:TypeError: sequence item 1: expected a bytes-like object, str found
    搜索得到:Django: how to install mysql/connector python with pip3
    某个回答的某条评论:

    @Lucio please, update your answer: mysql-connector-python >= 8.0.13 has a bug, making it impossible to work with Django: code.djangoproject.com/ticket/30469 As a workaround, add 'use_pure': True to the 'OPTIONS'.– Dmytro GiermanOct 31 '19 at 7:58

    添加'use_pure': True后不报错了

  • 相关阅读:
    c语言 9-3
    c语言 9-12
    c语言 9-11
    c语言 9-10
    c语言中实现字符串大小写的转换
    tyvj1106 登山
    tyvj1125 JR's chop
    tyvj1148 小船弯弯
    tyvj1087 sumsets
    tyvj1086 Elevator
  • 原文地址:https://www.cnblogs.com/winng/p/django_mysql_driver.html
Copyright © 2020-2023  润新知