Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python MySQLdb在命令行上从Python工作,但不从Django Views.py工作_Python_Mysql_Django_Linux_Ubuntu - Fatal编程技术网

Python MySQLdb在命令行上从Python工作,但不从Django Views.py工作

Python MySQLdb在命令行上从Python工作,但不从Django Views.py工作,python,mysql,django,linux,ubuntu,Python,Mysql,Django,Linux,Ubuntu,我有一个名为getpos的Django views.py函数,它由apache2和wsgi.py提供服务。如果我在Ubuntu命令行的普通Python会话中从my views.py运行完全相同的代码,MySQLdb连接工作正常: >>> import MySQLdb >>> db = MySQLdb.connect(host="localhost",port=22,user="root",passwd="mypassword",db="gps") >&g

我有一个名为getpos的Django views.py函数,它由apache2和wsgi.py提供服务。如果我在Ubuntu命令行的普通Python会话中从my 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”,但似乎没有任何效果。谢谢你的帮助,谢谢

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

为什么要使用mySQLdb而不是Django ORM?这是我正在重新启动的遗留项目。如果我没记错的话,ORM无法执行我试图执行的一些复杂SQL查询。这些查询以前可以工作,但现在不行。