我有一个名为 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/