django从哪里加载MySQLdb?

导读:本篇文章首席CTO笔记来给大家介绍有关django从哪里加载MySQLdb的相关内容,希望对大家有所帮助,一起来看看吧。

Django【import MySQLdb as Database ModuleNotFoundError: No module named ‘MySQLdb‘】

写Django项目的时候出现bug:import MySQLdb as Database ModuleNotFoundError: No module named ‘MySQLdb’

原因是MySQLdb只适用于python2,在python3一般使用pymysql

所以要在app的__init__.py文件中加入

import pymysql

pymysql.install_as_MySQLdb()

而后又出现bug:raise ImproperlyConfigured('mysqlclient 1.4.0 or newer is required; you have 0.10.0.

原因是MySQLclient 目前只支持到 Python3.4,我们使用了更高版本的 python

所以还要在__init__.py里加上一句以指定版本

pymysql.version_info = (1, 4, 13, "final", 0)

python怎么安装mysqldb

在配置Django时,选择的是mysql数据库,要安装MySQLdb模块,不过安装过程中,遇到了很多errors,记录一下。

系统:ubuntu 11.10

mysql:直接apt-get安装的,version:5.1.62

到官方下载MySQL for Python

然后解压,打开README:

里面有安装过程:

tarxfzMySQL?python?1.2.1.tar.gz cd MySQL-python-1.2.1# edit site.cfg if necessary# edit site.cfg if necessary python setup.py build$ sudo python setup.py install # or su first不过在python setup.py build时报错:

ImportError: No module named setuptools

ubuntu下安装:

sudo apt-get install python-setuptools

python-setuptools : Python Distutils Enhancements (setuptools compatibility)然后再次python setup.py build,又报错:

EnvironmentError: mysql_config not found

因为mysql_config是属于MySQL开发用的文件,而使用apt-get安装的MySQL是没有这个文件的,于是在包安装器里面寻找sudo apt-get install libmysqld-dev

libmysqld-dev : MySQL embedded database development files再次运行python setup.py build,报错:

building ‘_mysql’ extension

gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -Dversion_info=(1,2,3,’final’,0) -D__version__=1.2.3 -I/usr/include/mysql -I/usr/include/python2.7 -c _mysql.c -o build/temp.linux-i686-2.7/_mysql.o -DBIG_JOINS=1 -fno-strict-aliasing -DUNIV_LINUX -DUNIV_LINUXIn file included from _mysql.c:29:0:

pymemcompat.h:10:20: fatal error: Python.h: No such file or directory解决方案,

sudo apt-get install python-dev

python-dev : header files and a static library for Python (default)然后就按照README里的:

pythonsetup.pybuild sudo python setup.py install测试:

import MySQLdb

没有报错即可。

django从哪里加载MySQLdb?  第1张

django怎么使用本机mysql数据库

step 1:

修改你的django project目录下的settings.py 文件至如下所示:

其中,'NAME' 对应的 ‘db_name' 是你事先使用mysql

的命令行提示符创建的数据库名称。注意:在django使用数据库之前,你必须先创建出数据库,否则会报错。'USER'对应的'username'

还有 'PASSWORD' 对应的‘passwd'

就是你在mysql中创建的用户名和密码。如果你有多个的话,随便填一个就好。'HOST'和'PORT'默认都可以不填。

题外话: 使用用户名和密码登录mysql的方法:

首先,你需要进入 mysql/bin的目录下,也可以在.bash_profile中设置环境变量:

PATH=/usr/local/bin:/usr/bin:/bin:/sbin:/usr/sbin:/usr/local/sbin:/usr/local/Cellar/mysql/5.6.22/bin/

再在prompt输入 mysql -u username -p, 回车后再输入 passwd即可

step 2:

然后,在manage.py路径中使用python manage.py syncdb 试试,结果会提示你错误找不到 MySQLdb 这个module, 为什么呢, 因为 python manage.py syncdb 命令是这样工作的:

1. 在project目录的settings.py的INSTALLED_APPS元组中找到可能需要更新的APP。

2. 找到每一个APP目录中的models.py (关系定义文件),并针对变化在数据库中进行更新。

说了这么多,前面那个错误 找不到 module MySQLdb 是什么意思啊 ?

先给个图,再解释:

因为在models.py中定义关系使用的是python,而真正在数据库中操作形成model当然一定要用sql语句,所以必须要有一些功能模块

来把python语句转化成sql语句。如果你使用sqlite的话,由于sqlite和转化模块都已经由python内置了,所以直接使用不会发生错

误。但是 ”mysql语句的转化模块“ 就需要你手动加载了,这些模块放在 MySQL-python 中。

我是使用pip 安装的:

安装了之后,再使用 python manage.py syncdb就OK啦。

我使用的系统是 OS X,下面是 mysql 默认的安装路径

/usr/local/Cellar/mysql/5.6.22/

如果你想知道你的数据库文件是放在哪里的,你可以查看mysql_config文件中的ldata变量,这个变量的值就是 默认的数据库文件夹存储的路径。 我的系统中,mysql_config的完整路径是 :

/usr/local/Cellar/mysql/5.6.22/bin/mysql_config

如何在Django1.6结合Python3.4版本中使用MySql

试试在你项目的__init__.py中加入下列代码):

# __init__.py

import pymysql

pymysql.install_as_MySQLdb()

# 在settings.py 中修改 DATABASES

# settings.py

DATABASES = {

'default': {

"ENGINE": "django.db.backends.mysql",

"NAME": '', # 使用数据库

"USER": "root",

"PASSWORD": "",

"HOST": "127.0.0.1",

"PORT": '3306'

}

}

结语:以上就是首席CTO笔记为大家介绍的关于django从哪里加载MySQLdb的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。

以上内容为新媒号(sinv.com.cn)为大家提供!新媒号,坚持更新大家所需的互联网后端知识。希望您喜欢!

版权申明:新媒号所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,不声明或保证其内容的正确性,如发现本站有涉嫌抄袭侵权/违法违规的内容。请发送邮件至 k2#88.com(替换@) 举报,一经查实,本站将立刻删除。

(0)
上一篇 2023-09-23 13:22
下一篇 2023-09-23

相关推荐

发表回复

登录后才能评论