django电商项目源码_python——django(一)执行数据库迁移错误

前言:

先大体说明执行数据迁移文件时候的相关环境,其中记得有一次安装搜索库时候造成django版本升级过,然后我又降级到了1.8.2,突然调试时候发现迁移mysql文件时候竟然报错,回顾了下是老问题,所以记录下;

环境版本:python3.7

django版本:1.8.2

具体报错信息:

Traceback (most recent call last):
  File "/Users/dongchao/.virtualenvs/py_django/lib/python3.7/site-packages/django/db/backends/mysql/base.py", line 24, in <module>
    import MySQLdb as Database
ModuleNotFoundError: No module named 'MySQLdb'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/Users/dongchao/.virtualenvs/py_django/lib/python3.7/site-packages/django/core/management/__init__.py", line 338, in execute_from_command_line
    utility.execute()
  File "/Users/dongchao/.virtualenvs/py_django/lib/python3.7/site-packages/django/core/management/__init__.py", line 312, in execute
    django.setup()
  File "/Users/dongchao/.virtualenvs/py_django/lib/python3.7/site-packages/django/__init__.py", line 18, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/Users/dongchao/.virtualenvs/py_django/lib/python3.7/site-packages/django/apps/registry.py", line 108, in populate
    app_config.import_models(all_models)
  File "/Users/dongchao/.virtualenvs/py_django/lib/python3.7/site-packages/django/apps/config.py", line 198, in import_models
    self.models_module = import_module(models_module_name)
  File "/Users/dongchao/.virtualenvs/py_django/lib/python3.7/importlib/__init__.py", line 127, in import_module
......

报错分析:

django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named 'MySQLdb' 非常明显没有MySQLdb吗?

记得我第一次时候是飞快的在虚拟环境输入了pip install MySQLdb,然后大家都猜到了又报错了;

ERROR: Could not find a version that satisfies the requirement MySQLdb (from versions: none)
ERROR: No matching distribution found for MySQLdb

冷静的思考了下重新从头开始分析:

最开始的报错信息原因是啥?就是因为django默认使用的是sqlite类型数据库,我在setting中配置了mysql数据库造成执行model迁移数据库文件时候报没有mysql驱动造成的;

DATABASES = {
    'default': {
        # 'ENGINE': 'django.db.backends.sqlite3',
        # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        'ENGINE':'django.db.backends.mysql',
        'NAME':'bj18',
        'USER':'root',
        'PASSWORD':'......',
        'HOST':'..........',
        'PORT':3306,
    }
}

然后回想了下对于mysql的支持python2和python3提供的模块不一样,这个MySQLdb应该是python2的,那3的呢?3升级后应该是PyMySQL;

到这里很清晰了,但是还有问题:1、PyMySQL我已经安装了,但是还是没迁移成功——>2、关键问题,安装后在python3对应django中如何让人家认可呢?——>3、首先想到的是修改源码,但是感觉这样做不妥,随便修改框架源码违背设计原则呀;

解决方案:

最终解决方案在项目的__init__.py包文件中导入提供即可:

import pymysql
pymysql.install_as_MySQLdb()

2930d239125cbc631d660b10b5adddb1.png

再次执行迁移文件就成功了,然后执行迁移文件成功建立数据表;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值