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

时间:2018-12-09 17:18:04

标签: python mysql django linux ubuntu

我有一个名为getpos的Django views.py函数,该函数由apache2和wsgi.py提供。如果我在Ubuntu命令行的普通Python会话中从views.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连接,但不能在Django的views.py文件中连接?谢谢。

我尝试使用“ 127.0.0.1”代替“ localhost”,但是似乎没有任何效果。感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我必须将connect参数中的端口更改为host =“ localhost”,port = 3306。