导读:本篇文章首席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怎么使用本机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(替换@) 举报,一经查实,本站将立刻删除。