Python MySQLdb 在 Python 命令行上运行,但不能在 Django Views.py 上运行

标签 python mysql django linux ubuntu

我有一个名为 getpos 的 Django views.py 函数,由 apache2 和 wsgi.py 提供服务。如果我在 Ubuntu 命令行的正常 Python session 中运行 view.py 中完全相同的代码,则 MySQLdb 连接工作正常:

>>> import MySQLdb
>>> db = MySQLdb.connect(host="localhost",port=22,user="root",passwd="mypassword",db="gps")
>>> 
>>> cursor = db.cursor()

如果我从 django 调试服务器运行它,它会失败:

ERROR: (2003, "Can't connect to MySQL server on 'localhost' ([Errno 111] Connection refused)")

运行的代码是这样的:

def getpos(request):

    query = "SELECT * FROM..."

    # connect to the DB and return nearby deals
    db = MySQLdb.connect(host="localhost",port=22,user="root",passwd="mypassword",db="gps")
    cursor = db.cursor()

    # Query the gps Data database
    results = cursor.execute(query)
    db.commit()

为什么我可以在命令行上从 Python 进行连接,但不能在views.py 文件中使用 Django 进行连接?谢谢。

我尝试使用“127.0.0.1”而不是“localhost”,但似乎没有任何效果。

最佳答案

我必须将连接参数中的端口更改为 host="localhost",port=3306。

关于Python MySQLdb 在 Python 命令行上运行,但不能在 Django Views.py 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53694752/

相关文章:

mysql - 使用 Ruby on Rails 和数据库时遇到的问题

mysql - 将一列与不同表中的另一列进行比较并将值输入另一列触发MySQL

django - 查询作为字典列表的 Django JSONFields

Python:生成所有长度为 N 的唯一有序列表

python - Keras层输出和输入之间的差异

python - 有没有办法在 Django 中同时循环两个列表?

mysql:从表中搜索记录时,mysql 关闭连接并出现错误 "mysql server gone away"

python - Django 围绕标题发送电子邮件 u''

django - Aftership webhook 跟踪 API

java - 远程检查文件是否存在于不同的服务器上