我使用Windows 10命令行使用python34进行django项目但是,我遇到了SQL的困难。
我已经使用pip install mysqlclient==1.3.5
安装了mysqlclient并找到了该文件,以确保我没有妄想。然后我运行python manage.py migrate
将表迁移到SQL数据库(我使用的是phpmyadmin)。但是当命令返回时...
File "C:\Users\user\env\lib\site-packages\django\db\backends\mysql\base.py", line 30, in <module>
'Did you install mysqlclient or MySQL-python?' % e
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named 'MySQLdb'.
Did you install mysqlclient or MySQL-python?
我知道这些问题已经存在,但是没有一个解决方案似乎对尝试产生了任何影响。提前谢谢。
答案 0 :(得分:95)
pip install pymysql
然后,编辑项目origin目录中的__init__.py文件(与settings.py相同)
添加:
import pymysql
pymysql.install_as_MySQLdb()
答案 1 :(得分:8)
使用以下命令解决您的问题,
pip install mysql-python
apt-get install python3-mysqldb libmysqlclient-dev python-dev
适用于Debian
答案 2 :(得分:6)
迁移到python 3后遇到同样的问题。显然,MySQL-python不兼容,因此根据官方django docs,在Mac上使用pip install mysqlclient
安装了mysqlclient。请注意,文档中提到了一些特定于操作系统的问题。
引用docs:
先决条件
您可能需要像这样安装Python和MySQL开发标头和库:
sudo apt-get install python-dev default-libmysqlclient-dev
#Debian / Ubuntu
sudo yum install python-devel mysql-devel
#Red Hat / CentOS
brew install mysql-connector-c
#macOS(自制软件)(当前有错误。请参见下文)在Windows上,您可以安装不带MySQLConnector / C或MSVC的二进制轮子。
关于Python 3的说明:如果您正在使用python3,则需要使用以下命令安装python3-dev:
sudo apt-get install python3-dev
#debian / Ubuntu
sudo yum install python3-devel
#Red Hat / CentOS关于macOS上的MySQL Connector / C错误的说明
另请参阅:https://bugs.mysql.com/bug.php?id=86971
MySQL Connector / C的版本可能具有错误的默认配置选项,当安装
mysqlclient-python
时会导致编译错误。 (自2017年11月起,对于自制软件的mysql-connector-c
和官方软件包来说确实如此)修改
mysql_config
可以解决以下问题。更改
# on macOS, on or about line 112:
# Create options
libs="-L$pkglibdir"
libs="$libs -l "
到
# Create options
libs="-L$pkglibdir"
libs="$libs -lmysqlclient -lssl -lcrypto"
不正确的ssl配置也可能会导致问题;有关macOS的详细信息,请参见
brew info openssl
。从PyPI安装
pip install mysqlclient
注意:Windows的Wheels可能不会与源包一起发布。您应该在
requirements.txt
中固定版本,以避免尝试安装最新的源程序包。从源安装
- 通过
git clone
或zipfile下载源。- 自定义
site.cfg
python setup.py install
答案 3 :(得分:4)
此命令从上述@Aniket Sinha的回答中解决了问题:
pip install mysqlclient
答案 4 :(得分:3)
如果您已经安装了mysqlclient
(即看到Requirement already satisfied
)并且正在获取Error loading MySQLdb Module
,则以下内容对我有用:
pip uninstall mysqlclient
export LDFLAGS="-L/usr/local/opt/openssl/lib"
和export CPPFLAGS="-I/usr/local/opt/openssl/include"
,如here所述pip install mysqlclient
这将重新安装mysqlclient
,无论出于何种原因解决了我的问题。
答案 5 :(得分:1)
我在 Windows 中使用 python 3。 我也遇到过这个问题。我刚刚卸载了“mysqlclient”,然后再次安装了它。 它以某种方式起作用
答案 6 :(得分:0)
即使使用python 3兼容的mysqlclient
库,我最近也遇到了这个问题,尽管设法以一种非正统的方式解决了我的问题。如果您使用的是MySQL 8,请尝试一下,看看是否有帮助! :)
我只是制作了libmysqlclient.21.dylib
文件的一个副本,该文件位于/usr/local/mysql/lib
中最新安装的MySQL 8.0.13中,并将该副本以相同的名称移动到{{ 1}}。
您将需要暂时在Mac上禁用安全完整性保护,但要这样做,因为您将没有权限或无法更改/usr/lib
中的任何权限,而无需禁用它。您可以通过启动进入恢复系统,在顶部的菜单上单击实用程序,然后打开终端并在终端中输入/usr/lib
来执行此操作。只记得在完成此操作后重新打开安全完整性保护!与上述过程的唯一区别是您改为运行csrutil disable
。
您可以找到有关如何禁用和启用macOS的安全完整性保护here的更多信息。
答案 7 :(得分:0)
点子
const express = require('express');
const router = express.Router();
module.exports = function(io) {
//we define the variables
var sendResponse = function () {};
io.sockets.on("connection",function(socket){
// Everytime a client logs in, display a connected message
console.log("Server-Client Connected!");
socket.on('connected', function(data) {
//listen to event at anytime (not only when endpoint is called)
//execute some code here
});
socket.on('taskResponse', data => {
//calling a function which is inside the router so we can send a res back
sendResponse(data);
})
});
router.post('/', async (req, res) => {
//pickedUser is one of the connected client
var pickedUser = "JZLpeA4pBECwbc5IAAAA";
io.to(pickedUser).emit('taskRequest', req.body);
sendResponse = function (data) {
return res.status(200).json({"text": "Success", "response": data.data});
}
});
return router;
};
对于pip3,您应该使用
pip install pymysql
然后,在项目原始目录(与settings.py相同)中编辑init.py文件。添加:
python3 -m pip install PyMySQL
答案 8 :(得分:0)
使用mysqlclient
安装anaconda
很simple and straight forward
。
conda install -c bioconda mysqlclient
,然后使用pip安装pymysql
。
pip install pymqsql
学习愉快。
答案 9 :(得分:0)
对于MAC os用户:
我已经多次面对这个问题。这里的关键是在通过pip命令安装mysqlclient之前设置这些环境变量。就我而言,它们如下所示:
export LDFLAGS =“-L/usr/local/opt/protobuf@3.7/lib”
export CPPFLAGS =“-I/usr/local/opt/protobuf@3.7/include”
答案 10 :(得分:0)
我只需要更新项目的依赖项,然后重新启动服务器即可。
答案 11 :(得分:0)
解决问题运行:pip install mysql-connector-python==8.0.23
在 mac 上使用 mysql.connector 版本 8.0.24 遇到了这个问题(如果代码库相同,那么问题也应该发生在 Windows 中)。第 51 行的 This file 导入“from django.db.backends.mysql.base import DatabaseWrapper as MySQLDatabaseWrapper”。 imported file 具有以下代码 14-20(您收到的确切代码和错误是代码的一部分
try:
import MySQLdb as Database
except ImportError as err:
raise ImproperlyConfigured(
'Error loading MySQLdb module.\n'
'Did you install mysqlclient?'
) from err
这里形成了错误。不知道为什么这个导入在不同版本的 mysql 连接器中不断返回,但 8.0.23 没有导入,所以我恢复到那个版本并且错误消失了......这是你希望继续使用 mysql.connector 的情况。Python。不确定逻辑以及为什么此错误在过去 5 年中一直存在...
答案 12 :(得分:-1)
在项目原始目录中编辑init.py文件
import pymysql
pymysql.install_as_MySQLdb()
答案 13 :(得分:-3)
尝试在xampp上启动apache和mysql。它对我有用。